harmony-utils之PhotoHelper,相册相关工具类
2025-06-25 00:58:23
108次阅读
0个评论
harmony-utils之PhotoHelper,相册相关工具类
harmony-utils 简介与说明
harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
picker_utils 是harmony-utils拆分出来的一个子库,包含PickerUtil、PhotoHelper、ScanUtil。
下载安装ohpm i @pura/harmony-utils
ohpm i @pura/picker_utils
//全局初始化方法,在UIAbility的onCreate方法中初始化 AppUtil.init()
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
AppUtil.init(this.context);
}
API方法与使用
select 通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频
//相册选择图片
PhotoHelper.select().then((result) => {
let uris = result.photoUris;
let uriStr = `调用相册,返回uris:\n${uris.join('\n')}`;
}).catch((err: BusinessError) => {
let str = `调用相册,异常:\n${JSON.stringify(err)}`;
});
selectEasy 通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频
//相册选择图片/视频(多选)
let options: photoAccessHelper.PhotoSelectOptions = {
MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_VIDEO_TYPE,
maxSelectNumber: 12,
isPhotoTakingSupported: false,
isSearchSupported: false,
isEditSupported: false,
isOriginalSupported: true
}
PhotoHelper.selectEasy(options).then((uris) => {
let uriStr = `调用相册,返回uris:\n${uris.join('\n')}`;
}).catch((err: BusinessError) => {
let str = `调用相册,异常:\n${JSON.stringify(err)}`;
});
//相册选择图片(单选)
let options: photoAccessHelper.PhotoSelectOptions = {
MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE,
maxSelectNumber: 1,
isOriginalSupported: true,
isPreviewForSingleSelectionSupported: true //单选模式下是否需要进大图预览
}
PhotoHelper.selectEasy(options).then((uris) => {
let uriStr = `调用相册,返回uris:\n${uris.join('\n')}`;
}).catch((err: BusinessError) => {
let str = `调用相册,异常:\n${JSON.stringify(err)}`;
});
save 申请权限保存,保存图片或视频到相册
//图片保存进相册(已申请权限使用该方法)
let ps: Permissions[] = ['ohos.permission.WRITE_IMAGEVIDEO'];
PermissionUtil.requestPermissions(ps).then((result) => {
if (result) {
let imgName = `漂亮小姐姐_${DateUtil.getTodayTime()}`;
PhotoHelper.save(photoAccessHelper.PhotoType.IMAGE, 'jpg', { title: imgName }).then(async (uri) => {
if (uri) {
let uriStr = `保存图片成功,返回uris:\n${uri}`;
let file = FileUtil.openSync(uri);
FileUtil.copyFile(this.filePath, file.fd).then(() => {
FileUtil.close(file.fd);
ToastUtil.showToast("图片保存成功");
})
}
}).catch((err: BusinessError) => {
let str = `调用保存图片,异常:\n${JSON.stringify(err)}`;
})
} else {
ToastUtil.showLong("请在设置中打开权限");
WantUtil.toAppSetting();
}
});
showAssetsCreationDialog 弹窗授权保存,调用接口拉起保存确认弹窗
let pixelMap = await ImageUtil.getPixelMapFromMedia($r("app.media.test_as4"));
let filePath = await ImageUtil.savePixelMap(pixelMap, FileUtil.getFilesDirPath(""), "漂亮小姐姐.png");
let uri = FileUtil.getUriFromPath(this.filePath);
let srcFileUris: Array<string>=[uri];
let desFileUris: Array<string> = await PhotoHelper.showAssetsCreationDialog(srcFileUris);
for (let index = 0; index < desFileUris.length; index++) {
//将来源于应用沙箱的照片内容写入媒体库的目标uri
let srcFile: fs.File = await Utils.open(srcFileUris[index], fs.OpenMode.READ_ONLY);
let desFile: fs.File = await Utils.open(desFileUris[index], fs.OpenMode.WRITE_ONLY);
await Utils.copyFile(srcFile.fd, desFile.fd);
await Utils.close(srcFile);
await Utils.close(desFile);
}
showAssetsCreationDialogEasy 弹窗授权保存,调用接口拉起保存确认弹窗,并保存
let pixelMap = await ImageUtil.getPixelMapFromMedia($r("app.media.test_as4"));
let filePath = await ImageUtil.savePixelMap(pixelMap, FileUtil.getFilesDirPath(""), "漂亮小姐姐.png");
let uri = FileUtil.getUriFromPath(this.filePath);
PhotoHelper.showAssetsCreationDialogEasy([uri, uri2]).then((result) => {
let uriStr = `图片保存成功,返回uris:\n${JSON.stringify(result, null, 2)}`;
DialogHelper.showToast("图片保存成功!");
}).catch((error: BusinessError) => {
DialogHelper.showToast("图片保存失败!");
});
applyChanges 安全控件保存,提交媒体变更请求,插入图片/视频
//安全控件保存,图片保存进相册。
let pixelMap = await ImageUtil.getPixelMapFromMedia($r("app.media.test_as4"));
let filePath = await ImageUtil.savePixelMap(pixelMap, FileUtil.getFilesDirPath(""), "漂亮小姐姐.png");
let uri = FileUtil.getUriFromPath(this.filePath);
PhotoHelper.applyChanges(uri).then((result) => {
let uriStr = `保存图片成功:${result.uri}`;
}).catch((err: BusinessError) => {
let str = `保存图片失败:${JSON.stringify(err)}`;
});
getPhotoAsset 获取对应uri的PhotoAsset对象,用于读取文件信息
PickerUtil.selectPhoto().then(async (uris) => {
if (uris && uris.length > 0) {
PhotoHelper.getPhotoAsset(uris[0]).then((photoAsset) => {
try {
let name = photoAsset?.get(photoAccessHelper.PhotoKeys.DISPLAY_NAME);
let type = photoAsset?.get(photoAccessHelper.PhotoKeys.PHOTO_TYPE);
let title = photoAsset?.get(photoAccessHelper.PhotoKeys.TITLE.toString());
let size = photoAsset?.get(photoAccessHelper.PhotoKeys.SIZE.toString());
let with1 = photoAsset?.get(photoAccessHelper.PhotoKeys.WIDTH.toString());
let height = photoAsset?.get(photoAccessHelper.PhotoKeys.HEIGHT.toString());
let date = photoAsset?.get(photoAccessHelper.PhotoKeys.DATE_TAKEN.toString());
let orientation = photoAsset?.get(photoAccessHelper.PhotoKeys.ORIENTATION.toString());
let uriStr = `图片信息:\n文件名:${name}\n文件类型:${type}\n文件大小:${size}\n图片宽度:${with1}\n图片高度:${height}\n拍摄日期:${date}\n文件标题:${title}\n图片文件的方向:${orientation}`
} catch (err) {
LogUtil.error("读取图片信息失败:" + JSON.stringify(err));
}
photoAsset?.getThumbnail((err, pixelMap) => {
if (err) {
LogUtil.error("缩略图-异常:" + JSON.stringify(err));
return;
}
// this.pixelMap = pixelMap;
})
}).catch((err: BusinessError) => {
let str = `读取图片异常:\n${JSON.stringify(err)}`;
});
} else {
ToastUtil.showToast("请选择图片");
}
}).catch((err: BusinessError) => {
let str = `异常:\n${JSON.stringify(err)}`;
});
创作不易,请给童长老点赞👍
https://github.com/787107497/harmony-utils
https://gitee.com/tongyuyan/harmony-utils
OpenHarmony三方库
童长老CSDN博客
00
- 0回答
- 6粉丝
- 0关注
相关话题
- harmony-utils之AppUtil,APP相关工具类
- harmony-utils之DeviceUtil,设备相关工具类
- harmony-utils之CrashUtil,异常相关工具类
- harmony-utils之ImageUtil,图片相关工具类
- harmony-utils之FileUtil,文件相关工具类
- harmony-utils之DisplayUtil,屏幕相关工具类
- harmony-utils之NetworkUtil,网络相关工具类
- harmony-utils之PermissionUtil,授权相关工具类
- harmony-utils之ResUtil,资源相关工具类
- harmony-utils之SnapshotUtil,截图相关工具类
- harmony-utils之WindowUtil,窗口相关工具类
- harmony-utils之AuthUtil,生物认证相关工具类
- harmony-utils之LocationUtil,定位相关工具类
- harmony-utils之DateUtil,日期工具类
- harmony-utils之ArrayUtil,集合工具类