【关键字】
保存图片 / 相册管理
【问题描述】
三方应用如何把图片存到相册 ?
【解决方案】
首先保存一个空图片到图库,然后获取空文件路径,再把应用沙箱里的图片复制到空文件中即可。
请参考如下代码:
let uris
try {
const photoSaveOptions = new picker.PhotoSaveOptions(); // 创建文件管理器保存选项实例
photoSaveOptions.newFileNames = ["PhotoViewPicker01.png"]; // 保存文件名(可选),方括号里的文件名自定义,每次不能重复,设备里已有这个文件的话,名字就需要改个不一样的,不然接口会报错
const photoViewPicker = new picker.PhotoViewPicker();
try {
let photoSaveResult = await photoViewPicker.save(photoSaveOptions);
if (photoSaveResult != undefined) {
uris = photoSaveResult;
console.info('photoViewPicker.save to file succeed and uris are:' + uris);
}
} catch (error) {
let err: BusinessError = error as BusinessError;
console.error(`[picker] Invoke photoViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
}
} catch (error) {
let err: BusinessError = error as BusinessError;
console.info("[picker] photoViewPickerSave error = " + JSON.stringify(err));
}
try{
let path = getContext().filesDir+"/test.jpg" //需要保存的图片的路径
let dir = uris[0]
let file = fs.openSync(path)
let file2 = fs.openSync(dir,fs.OpenMode.READ_WRITE)
fs.copyFileSync(file.fd,file2.fd)
fs.closeSync(file)
fs.closeSync(file2)
}catch (error) {
let err: BusinessError = error as BusinessError;
console.error(`[picker] Invoke photoViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
}