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图片到相册,可以按照以下步骤操作:

  1. 获取图片数据:确保你已有图片的PixelMap对象或图片数据(如ArrayBuffer)。
  2. 转换图片格式:使用image.createImagePacker()将图片数据转换为适合保存的格式,如JPEG(虽然目标是PNG,但系统API可能默认或更支持JPEG,需后续指定格式)。不过,若图片本身就是PNG格式,且API支持直接保存,则可省略此步中格式转换部分,但需确保后续步骤正确指定格式。
  3. 保存到临时目录:通过文件I/O操作,使用fs模块创建文件并写入数据,将图片保存到设备的临时或缓存目录中。
  4. 使用相册管理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

回到顶部