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
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS 截图保存图片到相册 
1307浏览  • 1回复 待解决
HarmonyOS组件截图后如何将PixelMap保存至系统相册 
2429浏览  • 1回复 待解决
组件截图怎么保存将pixelMap存储到系统相册或应用沙箱 
2334浏览  • 1回复 待解决
HarmonyOS 组件截图并保存到系统相册有延迟 
1165浏览  • 1回复 待解决
HarmonyOS componentSnapshot页面截图保存图片到相册不完整 
1315浏览  • 1回复 待解决
HarmonyOS 网络视频如何下载到相册,可以在相册中看到? 
1674浏览  • 1回复 待解决
HarmonyOS 实现保存图片到相册 
1693浏览  • 1回复 待解决
HarmonyOS 保存图片到相册问题 
1870浏览  • 1回复 待解决
HarmonyOS 保存图片到本地相册 
1584浏览  • 1回复 待解决
HarmonyOS 保存图片到系统相册 
1700浏览  • 1回复 待解决
HarmonyOS 保存图片到相册权限问题 
1509浏览  • 1回复 待解决
如何保存网络图片到相册 
2531浏览  • 1回复 待解决
HarmonyOS 如何将图片保存到相册 
1090浏览  • 1回复 待解决
用户相册图片选择后将图片裁剪如何保存在本地? 
521浏览  • 0回复 待解决
HarmonyOS组件截图保存到相册失败,预览图灰色 
1588浏览  • 1回复 待解决
HarmonyOS  如何将指定布局内容保存为图片,并保存到相册 
1906浏览  • 1回复 待解决
HarmonyOS 保存图片到相册有延时,如何在保存完之后立即刷新相册,需要相关代码的实现 
1265浏览  • 1回复 待解决
HarmonyOS  如何将图片插入到相册 
1797浏览  • 1回复 待解决
HarmonyOS保存图片到系统相册问题咨询 
1929浏览  • 1回复 待解决
HarmonyOS 下载的图片的话,能通知到相册吗想在相册也看到吗 
575浏览  • 1回复 待解决
求大佬告知如何保存图片到相册 
2678浏览  • 1回复 待解决
获取网络图片并保存到相册 
4022浏览  • 1回复 待解决
HarmonyOS 如何将图片,视频保存到相册 
1447浏览  • 1回复 待解决
HarmonyOS 组件截图然后保存到相册中后无法显示,尺寸为0 
1209浏览  • 1回复 待解决
HarmonyOS 某个组件截图成功后, 如何将image.PixelMap类型的结果保存至系统相册或者本地app沙箱 
1255浏览  • 1回复 待解决





















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