HarmonyOS 鸿蒙Next:base64格式的图片怎么保存到相册

发布于 1周前 作者 songsunli 来自 鸿蒙OS

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>

这个可以,感谢大佬

我测试发现图片并没有直接保存到相机呀?如果想直接保存到相册要怎么改?

比较复杂哦,你要先把base64转成文件流,然后使用@ohos.file.fs的fs.write方法先把图片写到自己的项目目录里面,然后在使用@ohos.file.picker读取目录里面的图片,保存到用户手机上。大概思路就是这样的

期待HarmonyOS能继续优化多屏协同功能,让跨设备体验更加完美。

哪有这么复杂,转buffer用安全控件直接就保存相册

我说的是API9的时候了,现在肯定方便了

在HarmonyOS中,将base64格式的图片保存到相册,可以通过以下步骤实现:

  1. 将base64字符串转换为二进制数据(ArrayBuffer)。
  2. 使用文件系统API(如fs.openfs.write)创建并写入文件到本地存储。
  3. 利用photoAccessHelpercreateAsset接口将文件保存到相册。这通常涉及获取相册访问权限。

如果问题依旧没法解决,请加我微信,我的微信是itying888。

回到顶部