HarmonyOS 鸿蒙Next 保存图片到相册

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

HarmonyOS 鸿蒙Next 保存图片到相册 我目前有个功能是要将pixelMap类型的图片源保存到相册,有大佬知道该怎么实现嘛

4 回复

可以参考下这篇博文:

HarmonyOS Next 屏幕截图 + 保存图片到系统相册 代码分享

https://developer.huawei.com/consumer/cn/blog/topic/03166979994620019

更多关于HarmonyOS 鸿蒙Next 保存图片到相册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以结合一下SaveButton来保存,安全控件的保存控件,用户通过点击该保存按钮,可以临时获取存储权限,而不需要权限弹框授权确认。

SaveButton-安全-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者 (huawei.com)

用saveButton先获取权限

SaveButton({ buttonType: ButtonType.Capsule, icon: SaveIconStyle.LINES, text: SaveDescription.SAVE_IMAGE, }) .onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => { if (result === SaveButtonOnClickResult.SUCCESS) { this.saveToAlbum() } })

然后再保存

async saveToAlbum() { try { // 获取相册的保存路径 let helper = photoAccessHelper.getPhotoAccessHelper(getContext(this)); let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, ‘jpeg’); let file = await fileIo.open(uri, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE); let imagePackerApi = image.createImagePacker(); let packOpts: image.PackingOption = { format: ‘image/jpeg’, quality: 98 };

  imagePackerApi.packToFile(this.pixmap, file.fd, packOpts, (err: BusinessError) => {
    if (err) {
      console.error("LogInfo", `Failed to pack the image to file.code ${err.code},message is ${err.message}`);
    } else {
      console.info("LogInfo", 'Succeeded in packing the image to file.');
      imagePackerApi.release((err: BusinessError) => {
        if (err) {
          console.error("LogInfo",
            `Failed to release the image source instance.code ${err.code},message is ${err.message}`);
        } else {
          console.info("LogInfo", 'Succeeded in releasing the image source instance.');
          fileIo.close(file.fd);
        }
      })
      toast('已保存至相册')
    }
  })
} catch (e) {
  console.log("LogInfo", JSON.stringify(e))
}

}

在HarmonyOS(鸿蒙)系统中,保存图片到相册的操作通常涉及到使用系统提供的API来实现文件存储和媒体库更新。以下是一个简要的实现步骤概述,不涉及Java或C语言代码:

鸿蒙系统提供了丰富的API用于文件操作和媒体库管理。为了保存图片到相册,你需要执行以下关键步骤:

  1. 获取图片数据:首先,确保你已经有了要保存的图片数据,这可以是来自相机、网络下载或其他应用传递的图片。

  2. 指定存储路径:确定图片要保存的目录。鸿蒙系统提供了访问设备存储的权限管理,你需要确保应用已获取相应的存储权限。

  3. 写入图片文件:使用鸿蒙的文件系统API将图片数据写入到指定的存储路径。这通常涉及将图片数据转换为适当的格式(如JPEG或PNG),并创建文件以保存这些数据。

  4. 更新媒体库:图片保存后,你可能需要通知系统的媒体库(如图库应用)有新图片可用。鸿蒙系统提供了API来扫描和更新媒体库,确保新保存的图片能够立即在应用(如图库)中显示。

请注意,具体的API调用和参数配置可能会根据鸿蒙系统的版本和设备的不同而有所差异。

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

回到顶部