HarmonyOS Next 保存图片数据到系统文件

举报
水滴石轩 发表于 2025/03/09 16:41:53 2025/03/09
300 0 1
【摘要】 当前鸿蒙开发中如果要保存图片数据到系统相册,需要basic权限,而不是我们正常使用Normal权限,一些应用为了避免申请权限的麻烦,或者根本没有理由申请basic权限,可以将图片数据保存到系统文件中//图片资源压缩处理let bitmap: ArrayBuffer;//图片数据let packer: image.ImagePacker = image.createImagePacker();...

当前鸿蒙开发中如果要保存图片数据到系统相册,需要basic权限,而不是我们正常使用Normal权限,一些应用为了避免申请权限的麻烦,或者根本没有理由申请basic权限,可以将图片数据保存到系统文件中

//图片资源压缩处理
let bitmap: ArrayBuffer;//图片数据
let packer: image.ImagePacker = image.createImagePacker();
let packerData = await packer.packing(bitmap, {
	fornat: 'image/jpeg',
	quality: 90
});

// 获取文件名称
let date = new Date();
let year: string = date.getFullYear().toString();
let mouth: string = this.addSpaceZero(date.getMonth() +1);
let day: string = this.addSpaceZero(date.getDate());
let hours: string = this.addSpaceZero(date.getHours());
let ninutes: string = this.addSpaceZero(date.getMinutes());
let seconds: string = this.addSpaceZero(date.getSeconds());
let inageTitle: string = 'IMG_' + year + mouth + day + '_' + hours + minutes + seconds + '.jpg';
hilog.info(0x0000,`saveQRNew imageTitle: ${imageTitle)`, '%{public}s');

//图片保存时option设置
let photoSaveOptions = new picker.PhoteSeveOptions();
photoSaveOptions.newFileNames =[imageTitle];
let abilityContext = getContext() as common.UIAbilityContext;
let photoPicker = new picker.PhotoVienPicker(abilityContext);
photoPicker.save(photoSaveOptions).then((photoSaveResult: Array<string>) =>{
	hilog.info(0x0000,"photoPicker save success, uri: ${JSON.stringify(photoSaveResult)}', '%{public}s');
	let uri: string = photoSaveResult[0] || '';
	let file = fs.openSync(ur1, fs.OpenMode.WRITE_ONLY | fs.OpenMode.CREATE);
	fs.writesync(file.fd, packerData);
	fs.closeSync(file.fd);
}).catch((err: BusinessError)>{
	hilog.info(0x0000,"photoPicker save fail, err: S(JSON.stringify(err)}', '%{public}s');
});

addSpaceZero(timeNum: number): string {
	return timeNum < 10 ? '0' + timeNum.toString() : timeNum.toString();
}

----------------- end ---------------

后面会继续补充不足之处。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。