HarmonyOS 使用Camera Kit进行拍照后,打开系统相册并未有刷新出图片?

使用Camera Kit进行拍照后,打开系统相册并未有刷新出图片,请问是否有办法在拍照后通知相册刷新?

1、调用photoOutput的capture方法,在photoOutput.on('photoAvailable', callback) 回调中拿到buffer。

2、转换成PixelMap,使用photoAccessHelper.PhotoAccessHelper进行保存。Demo如下:

async ImageWriteToAlbum(pixelMap?:image.PixelMap) {
  let context = getContext(this);
  let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
  let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
  let extension:string = 'png';
  let options: photoAccessHelper.CreateOptions = {
    title: new Date().getTime().toString()
  }
  let uri = await phAccessHelper.createAsset(photoType, extension, options)
  console.error("uri: "+uri)
  try {
    if(pixelMap){
      let file: fs.File = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
      let imagePacker: image.ImagePacker = image.createImagePacker();
      let packOpts: image.PackingOption = { format: 'image/png', quality: 100 };
      await imagePacker.packToFile(pixelMap , file.fd, packOpts);
      fs.closeSync(file);
    }
    promptAction.showToast({
      message: '已保存至相册',
      duration: 2000
    });
  }
  catch (err) {
    console.error("error is "+ JSON.stringify(err))
    promptAction.showToast({
      message: '保存失败',
      duration: 2000
    });
  }
}
阅读 486
1 个回答

参考如下方案:添加imagePacker.release()。

let imagePacker: image.ImagePacker = image.createImagePacker();
let packOpts: image.PackingOption = { format: 'image/png', quality: 100 };
await imagePacker.packToFile(pixelMap , file.fd, packOpts);
fs.closeSync(file);
imagePacker.release()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进