HarmonyOS 鸿蒙Next 保存图片到相册怎么做

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

HarmonyOS 鸿蒙Next 保存图片到相册怎么做

1,鸿蒙保存图片到相册怎么做

2,需要申请什么权限

10 回复
可以使用三方库eftool,里面提供了保存相册的工具类

里面保存使用的是@ohos.file.photoAccessHelper 还是要申请权限

可以考虑使用SaveButton保存图片到相册,不需要权限只需要用户手动点击下载。

参考:https://developer.huawei.com/consumer/cn/blog/topic/03157306639465048

这个我看了,是不是只能在saveButton里面使用,我试过不用saveButton,还是要权限

学到了,还能这样玩

可以参考下这篇博文:

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

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

这篇文章使用的是showAssetsCreationDialog 这个弹框不支持显示略缩图 看起来不太好看 还有什么别的方法可以不申请权限保存到相册嘛 我需要自定义样式 不能使用SaveButton

要自定义样式的话目前没有其它方法

屏幕截图不太行,万一是长图呢

在HarmonyOS鸿蒙Next中保存图片到相册,可以通过以下步骤实现:

  1. 获取图片数据:首先,你需要获取要保存的图片数据。这可能来自网络请求、屏幕截图或应用内部资源。
  2. 转换图片格式:如果图片数据不是直接可用的格式(如ArrayBuffer),你需要将其转换为适合保存的格式。例如,可以使用image.createImagePackerpacking方法将PixelMap转换为ArrayBuffer。
  3. 使用相册管理API:HarmonyOS提供了相册管理API(如photoAccessHelper),你可以使用这些API将图片保存到相册。具体地,你需要创建PhotoCreationConfig对象来配置图片信息(如文件名、类型等),然后调用showAssetsCreationDialog方法显示保存对话框并保存图片。

示例代码如下:

// 假设你已经有了图片的ArrayBuffer数据(imageBuffer)和文件名(fileName)
let context = getContext(this) as common.UIAbilityContext;
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let srcFileUri = [fileUri.getUriFromPath(yourImagePath)]; // yourImagePath是图片在沙箱中的路径
let photoCreationConfigs = [{
    title: fileName,
    fileNameExtension: 'jpg',
    photoType: photoAccessHelper.PhotoType.IMAGE,
    subtype: photoAccessHelper.PhotoSubtype.DEFAULT
}];
phAccessHelper.showAssetsCreationDialog(srcFileUri, photoCreationConfigs).then(desFileUris => {
    console.log('图片已保存到相册', desFileUris);
});

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

回到顶部