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

当前鸿蒙开发中如果要保存图片数据到系统相册,需要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 ---------------

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.针对鸿蒙里的单位问题 解答:如果后台某一个字段定义为string类型,鸿蒙客户端定义为number,这个时候时...
    wl520mxj阅读 98评论 0 0
  • 鸿蒙获取版本号bundleManager.getBundleInfoForSelf(bundleManager.B...
    王希杰阅读 28评论 0 0
  • 注意事项 Web API 的大多数都不可用,比如window、document等通用的只有==console==、...
    HouJ_8307阅读 205评论 0 0
  • 客 户端的JavaScript是怎样的 什么是JavaScript? +是一个脚本语言 运行在浏览器(浏览器...
    hcySam阅读 519评论 0 2
  • 1 命令行窗口 1.1. 命令行窗口(小黑屏)、CMD窗口、终端、shell 开始菜单 -> 运行 -> cmd ...
    锦衣夜行001阅读 1,880评论 0 1

友情链接更多精彩内容