HarmonyOS 鸿蒙Next如何保存一张PNG图片到相册中
HarmonyOS 鸿蒙Next如何保存一张PNG图片到相册中
问题描述:
如何保存一张PNG图片到相册中
2 回复
import photoAccessHelper from ‘@ohos.file.photoAccessHelper’
import fs from ‘@ohos.file.fs’
@Entry
@Component
struct Index {
@State message: string = ‘Hello World’;
build() {
Row() {
Column() {
Image(r('app.media.icon')) .height(300) .width(300) SaveButton({ text:SaveDescription.SAVE_IMAGE, buttonType:ButtonType.Capsule}).onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => { if (result == SaveButtonOnClickResult.SUCCESS) { try { const context = getContext(this); let helper = photoAccessHelper.getPhotoAccessHelper(context); // onClick触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。 let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png'); // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制 let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); try { context.resourceManager.getMediaContent(r(‘app.media.icon’).id, 0)
.then(async value => {
let media = value.buffer;
// 写到媒体库文件中
await fs.write(file.fd, media);
await fs.close(file.fd);
AlertDialog.show({ message: ‘已保存至相册!’ });
});
}
catch (err) {
console.error("error is " + JSON.stringify(err))
}
} catch (error) {
console.error("error is " + JSON.stringify(error));
}
}
else {
AlertDialog.show({ message: “设置权限失败” })
}
})
}
.width(‘100%’)
}
.height(‘100%’)
}
}
更多关于HarmonyOS 鸿蒙Next如何保存一张PNG图片到相册中的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS 鸿蒙Next中保存一张PNG图片到相册,可以按照以下步骤操作:
- 获取图片数据:确保你已有图片的PixelMap对象或图片数据(如ArrayBuffer)。
- 转换图片格式:使用image.createImagePacker()将图片数据转换为适合保存的格式,如JPEG(虽然目标是PNG,但系统API可能默认或更支持JPEG,需后续指定格式)。不过,若图片本身就是PNG格式,且API支持直接保存,则可省略此步中格式转换部分,但需确保后续步骤正确指定格式。
- 保存到临时目录:通过文件I/O操作,使用fs模块创建文件并写入数据,将图片保存到设备的临时或缓存目录中。
- 使用相册管理API:利用photoAccessHelper.showAssetsCreationDialog() API将图片添加到系统相册。需传入源文件的URI和图片创建配置(如文件名、类型指定为PNG等)。
示例代码如下(假设已有图片的ArrayBuffer数据和文件名):
let context = getContext(this) as common.UIAbilityContext;
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let photoCreationConfigs = [{
title: 'yourFileName',
fileNameExtension: 'png',
photoType: photoAccessHelper.PhotoType.IMAGE,
subtype: photoAccessHelper.PhotoSubtype.DEFAULT
}];
// 后续调用showAssetsCreationDialog并传入相关参数
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。