HarmonyOS鸿蒙Next中如何把图片保存到相册

HarmonyOS鸿蒙Next中如何把图片保存到相册 当前需要把 base64 图片保存到系统相册

当前困难影响:

  1. savebutton 样式比较丑,且不能改变样式,不符合实际样式需求

  2. 如果通过 PhotoViewPicker 保存到公共目录 download/document 的话,在文件管理中可以找到对应图片,但相册中无法找到对应图片

3 回复

可以先把base64转成文件流,然后使用@ohos.file.fs的fs.write方法先把图片写到自己的项目目录里面,然后在使用@ohos.file.picker读取目录里面的图片,保存到用户手机上。

使用多媒体和文件管理模块,创建文件后写入数据以保存图片,可参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-image-V5

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


在HarmonyOS鸿蒙Next中,将图片保存到相册可以通过PhotoAccessHelper模块实现。首先,需要获取PhotoAccessHelper的实例,然后通过createAsset方法创建图片资源。具体步骤如下:

  1. 获取PhotoAccessHelper实例:使用PhotoAccessHelper.getPhotoAccessHelper(context)方法获取实例。

  2. 创建图片资源:使用PhotoAccessHelper.createAsset方法,传入图片的URI或文件路径,创建图片资源。

  3. 保存到相册:通过PhotoAccessHelper.insertAssets方法将创建的图片资源插入到相册中。

示例代码如下:

import photoAccessHelper from '@ohos.file.photoAccessHelper';

async function saveImageToAlbum(context, imageUri) {
    try {
        const photoHelper = photoAccessHelper.getPhotoAccessHelper(context);
        const imageAsset = await photoHelper.createAsset(imageUri);
        await photoHelper.insertAssets([imageAsset]);
    } catch (error) {
        console.error('Failed to save image to album:', error);
    }
}

在上述代码中,context是应用的上下文,imageUri是图片的URI或文件路径。通过调用saveImageToAlbum函数,可以将指定图片保存到相册中。

在HarmonyOS鸿蒙Next中,可以使用PhotoAccessHelper类将图片保存到相册。首先,获取PhotoAccessHelper实例,然后通过createAsset方法创建图片资源,并指定保存路径。示例代码如下:

PhotoAccessHelper photoAccessHelper = PhotoAccessHelper.getInstance(context);
PhotoAsset asset = photoAccessHelper.createAsset("image/jpeg", "Pictures/MyAlbum");
OutputStream outputStream = photoAccessHelper.openOutputStream(asset);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.close();

确保在manifest.json中声明必要的权限,如ohos.permission.WRITE_IMAGE

回到顶部