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

粘贴图片的两种方式

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
相关问题
HarmonyOS 系统剪贴板复制粘贴方法
109浏览 • 1回复 待解决
系统剪贴板可以存储哪些数据?
307浏览 • 1回复 待解决
无法读取系统剪贴板内容
127浏览 • 1回复 待解决
HarmonyOS如何实现粘贴板功能
288浏览 • 1回复 待解决
如何将内容直接复制剪贴板
557浏览 • 1回复 待解决
基于@ohos.pasteboard实现剪贴板功能
445浏览 • 1回复 待解决
如何将纯文本数据写入系统剪贴板
318浏览 • 1回复 待解决
读取剪贴板是否需要READ_PASTEBOARD权限
1863浏览 • 1回复 待解决
js获取canvas对象两种方式有啥不同?
7480浏览 • 1回复 待解决
HarmonyOS 两种模式布局如何兼容。
439浏览 • 1回复 待解决
PolarDB 集群连接地址包括哪两种
2816浏览 • 1回复 待解决