HarmonyOS 鸿蒙Next:base64格式的图片怎么保存到相册
HarmonyOS 鸿蒙Next:base64格式的图片怎么保存到相册
我想要把base64的图片保存到相册,怎么做?
9 回复
大概是这样的方法:
saveImage() {
//文件保存路径
let uri = '';
try {
let PhotoSaveOptions = new picker.PhotoSaveOptions();
//保存图片默认名称
PhotoSaveOptions.newFileNames = ['test.png'];
let photoPicker = new picker.PhotoViewPicker();
//调起系统的图片保存功能
photoPicker.save(PhotoSaveOptions).then((PhotoSaveResult) => {
uri = PhotoSaveResult[0];
//获取图片的base64字符串
let imageStr = '图片的base64字符串'.split(',')[1];
//打开文件
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
//base64字符串转成buffer
const decodeBuffer = buffer.from(imageStr, 'base64').buffer;
//写入文件
fs.writeSync(file.fd, decodeBuffer);
//关闭文件
fs.closeSync(file);
}).catch((err: Error) => {
console.error(err + '');
})
} catch (e) {
console.error(e);
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
这个可以,感谢大佬
我测试发现图片并没有直接保存到相机呀?如果想直接保存到相册要怎么改?
可以用SaveButton组件,参考:【https://developer.huawei.com/consumer/cn/blog/topic/03157306639465048】
比较复杂哦,你要先把base64转成文件流,然后使用@ohos.file.fs的fs.write方法先把图片写到自己的项目目录里面,然后在使用@ohos.file.picker读取目录里面的图片,保存到用户手机上。大概思路就是这样的
期待HarmonyOS能继续优化多屏协同功能,让跨设备体验更加完美。
哪有这么复杂,转buffer用安全控件直接就保存相册
我说的是API9的时候了,现在肯定方便了
在HarmonyOS中,将base64格式的图片保存到相册,可以通过以下步骤实现:
- 将base64字符串转换为二进制数据(ArrayBuffer)。
- 使用文件系统API(如
fs.open
和fs.write
)创建并写入文件到本地存储。 - 利用
photoAccessHelper
和createAsset
接口将文件保存到相册。这通常涉及获取相册访问权限。
如果问题依旧没法解决,请加我微信,我的微信是itying888。