粘贴图片的两种方式,本模块主要提供管理系统剪贴板的能力,为系统复制、粘贴功能提供支持。

粘贴图片的两种方式

HarmonyOS
2024-05-20 21:25:53
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
失望的满天星

本模块主要提供管理系统剪贴板的能力,为系统复制、粘贴功能提供支持。系统剪贴板支持对文本、HTML、URI、Want等内容的操作。粘贴图片分为两种方式,我们从网站上复制而来的图片类型属于PixelMap,而从应用内复制的则是uri,所以在粘贴的时候pasteboard提供了两种粘贴方式。

核心代码解释及具体代码展示

下面,分别介绍两种方式的用法:

1、导入模块

import pasteboard from '@ohos.pasteboard';

2、获取系统剪切板实例

pasteboard.getSystemPasteboard()

3、粘贴PixelMap图片

Button("粘贴PixelMap图片") 
          .height(50) 
          .width('100%') 
          .onClick(() => { 
            console.info("粘贴") 
            pasteboard.getSystemPasteboard().getPasteData().then((pasteData) => { 
              let pixelMap = pasteData.getPrimaryPixelMap() 
              pixelMap.getImageInfo().then((imageInfo) => { 
                console.info("test---" + imageInfo.size.height + imageInfo.size.width) 
              }) 
              this.image = pixelMap 
            }) 
          })

4、粘贴uri图片

Button("粘贴uri图片") 
          .height(50) 
          .width('100%') 
          .onClick(() => { 
            console.info("粘贴") 
            pasteboard.getSystemPasteboard().getPasteData().then((pasteData) => { 
              let uri = pasteData.getPrimaryUri() 
              console.log("-------------getPrimaryUri-------------" + uri) 
              let imgfile = fs.open(uri); 
              imgfile.then(file => { 
                console.log("-------------fd-------------", file) 
                const imageSource  = image.createImageSource(file.fd) 
                const decodingOptions: image.DecodingOptions = { 
                  editable: true, 
                  desiredPixelFormat: 3, 
                } 
                imageSource.createPixelMap(decodingOptions).then((pixelMap) => { 
                  console.log("-------------createPixelMap-------------") 
                  this.image = pixelMap 
                }).catch((err:Error) => { 
                  console.log("-------------createPixelMap-- error-----------", err) 
                }) 
              }).catch((err:Error) => { 
                console.log("-------------fileio-- error-----------", err) 
              }) 
            }).catch((err:Error) => { 
              console.log("-------------getPasteData-- error-----------", err) 
            }) 
          })

适配版本信息

  • IDE:DevEco Studio 4.0.3.600
  • SDK:HarmoneyOS 4.0.0.42
分享
微博
QQ
微信
回复
2024-05-21 17:19:50
相关问题
读取剪贴板是否需要READ_PASTEBOARD权限
647浏览 • 1回复 待解决
js获取canvas对象两种方式有啥不同?
6270浏览 • 1回复 待解决
PolarDB 集群连接地址包括哪两种
1896浏览 • 1回复 待解决
HAP是否提供动态加载能力
789浏览 • 1回复 待解决
HarmonyOS是否提供类似opencv能力
609浏览 • 1回复 待解决
DevEco提供哪些开放能力
4885浏览 • 1回复 待解决
是否提供提前初始化webview能力
916浏览 • 1回复 待解决
众测时提供安装包给用户方式
1071浏览 • 1回复 待解决
期望系统api提供深色模式控制api
644浏览 • 1回复 待解决
PolarDB 支持哪些扩容方式
2362浏览 • 1回复 待解决
鸿蒙提供画中画功能要怎么实现?
439浏览 • 1回复 待解决