HarmonyOS 将组件截图,并保存图片到相册后,需要kill掉app才能在相册中看到

截图并保存代码如下:

snapshot(){
  componentSnapshot.get('clickImage', (error: Error, pixmap: image.PixelMap) => {
    if (error) {
      console.log(`componentSnapshot error ${JSON.stringify(error)}`)
      return;
    }
    console.log(`componentSnapshot success ${JSON.stringify(pixmap.getImageInfoSync())}`)
    this.saveToAlbum(pixmap)
  })
}

async saveToAlbum(pixelMap: image.PixelMap) {
  try {
    let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(getContext());
    let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
    let extension: string = 'jpg';
    let options: photoAccessHelper.CreateOptions = {
      title: `gameshot`
    }
    phAccessHelper.createAsset(photoType, extension, options, (err, uri) => {
      if (uri !== undefined) {
        let packOpts: image.PackingOption = {
          format: "image/jpeg", quality: 98
        };
        let imagePackerApi = image.createImagePacker();
        imagePackerApi.packing(pixelMap, packOpts).then((data: ArrayBuffer) => {
          // data 为打包获取到的文件流,写入文件保存即可得到一张图片
          fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE).then((file: fs.File) => {
            fs.write(file.fd, data).then((writeLen: number) => {
              console.log('截图保存成功.  writeLen=' + writeLen);
              promptAction.showToast({
                message:'截图保存成功'
              })
              this.params.callback.onSuccess(SharePannelSharePlatform.WXFriend)
            });
          });
        }).catch((error: BusinessError) => {
          this.params.callback.onSuccess(SharePannelSharePlatform)
          console.error('saveToAlbum. Failed to pack the image. And the error is: ' + error);
        });
      } else {
        console.error(`saveToAlbum failed, error: ${err.code}, ${err.message}`);
      }
    });
  } catch (err) {
    console.error('saveToAlbum failed with err: ' + err);
  }
}
HarmonyOS
4天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

调用完fs.write将图片写入文件后,还需要调用fs.close触发媒体库扫描,这样才能及时在相册里看到刚保存的图片。

分享
微博
QQ
微信
回复
4天前
相关问题
HarmonyOS 截图保存图片相册
210浏览 • 1回复 待解决
HarmonyOS 保存图片系统相册
214浏览 • 1回复 待解决
HarmonyOS 保存图片相册问题
536浏览 • 1回复 待解决
HarmonyOS 保存图片本地相册
195浏览 • 1回复 待解决
HarmonyOS 实现保存图片相册
286浏览 • 1回复 待解决
HarmonyOS 保存图片相册权限问题
489浏览 • 1回复 待解决
如何保存网络图片相册
1030浏览 • 1回复 待解决
HarmonyOS保存图片系统相册问题咨询
922浏览 • 1回复 待解决
HarmonyOS 如何图片保存相册
132浏览 • 1回复 待解决
获取网络图片保存相册
1843浏览 • 1回复 待解决
HarmonyOS 如何图片插入相册
341浏览 • 1回复 待解决
如何保存本地图片相册
1373浏览 • 1回复 待解决
求大佬告知如何保存图片相册
1507浏览 • 1回复 待解决