使用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
});
}
}
参考如下方案:添加imagePacker.release()。