HarmonyOS 鸿蒙Next 如何把图片保存到文件管理器(API12)

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

HarmonyOS 鸿蒙Next 如何把图片保存到文件管理器(API12) 在API9中可以使用如下方法,把图片保存到文件管理器中,

但是API12中废弃了PhotoSaveOptions这个方法。

请问有什么办法解决这个问题吗?

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 = this.context.toDataURL().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);
    }
  }

更多关于HarmonyOS 鸿蒙Next 如何把图片保存到文件管理器(API12)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

可以使用SaveButtonOptions,替代用于指定保存按钮的图标、文本等指定元素。

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-security-components-savebutton-V5

更多关于HarmonyOS 鸿蒙Next 如何把图片保存到文件管理器(API12)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


用它可以实现保存图片到相册,请问我想保存图片到指定的文件夹这个可以实现吗?

老哥~这个例子是保存到相册的~我想保存到指定文件夹中(系统文件夹中),

在HarmonyOS鸿蒙Next(API 12)中,保存图片到文件管理器可以通过以下步骤实现:

首先,确保你的应用具有存储访问权限。在config.json文件中添加必要的权限声明,例如:

"module": {
    "package": "your.package.name",
    "reqPermissions": [
        "ohos.permission.READ_EXTERNAL_STORAGE",
        "ohos.permission.WRITE_EXTERNAL_STORAGE"
    ]
}

然后,在代码中执行保存操作。以下是一个示例代码,展示如何将Bitmap对象保存为图片文件:

import ohos.aafwk.ability.AbilityContext;
import ohos.media.image.Bitmap;
import ohos.media.image.BitmapFactory;
import ohos.multimodalinput.event.TouchEvent;
import ohos.utils.file.File;
import ohos.utils.file.FileOutputStream;
import ohos.utils.file.IOException;

// 假设你已经有一个Bitmap对象 bitmap
String filePath = "/storage/emulated/0/DCIM/Camera/saved_image.png";
File file = new File(filePath);
try (FileOutputStream fos = new FileOutputStream(file)) {
    if (bitmap != null) {
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
    }
} catch (IOException e) {
    e.printStackTrace();
}

注意:

  • 上述代码中的文件路径/storage/emulated/0/DCIM/Camera/是公共图库目录的一个示例,实际使用中可能需要根据应用需求调整路径。
  • 确保应用具有对目标目录的写权限。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部