HarmonyOS 鸿蒙Next photoAccessHelper.PhotoAsset.getThumbnail是否需要受限权限才可以使用?
HarmonyOS 鸿蒙Next photoAccessHelper.PhotoAsset.getThumbnail是否需要受限权限才可以使用?
1)getThumbnail 需要 ohos.permission.READ_IMAGEVIDEO权限,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-photoaccesshelper-V5#getthumbnail 2)对于未申请’ohos.permission.READ_IMAGEVIDEO’权限的应用,可以通过picker的方式调用该接口来请求图片资源数据,详情请参考开发指南。
获取缩略图,可以参考下这个demo:
import media from '@ohos.multimedia.media';
import image from '@ohos.multimedia.image';
import { BusinessError } from '@ohos.base';
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
@Entry
@Component
struct Index {
// pixelMap对象声明,用于图片显示
@State pixelMap: image.PixelMap | string | undefined = undefined;
build() {
Column() {
Button() {
Text('select').fontSize(20).fontWeight(FontWeight.Bold)
}.margin({ top: 20 }).width(100).height(40).onClick(() => this.showPicker())
// Button('点击')
// .onClick(() => {
// this.showPicker()
// })
Image(this.pixelMap).width(300).height(300).margin({ top: 20 })
}.width('100%').height('100%')
}
showPicker() {
// 创建图库选择器对象实例
const photoViewPicker = new photoAccessHelper.PhotoViewPicker();
// 图库选项配置,类型与数量
let selectOptions = new photoAccessHelper.PhotoSelectOptions();
selectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.VIDEO_TYPE;
selectOptions.maxSelectNumber = 1;
//调用select()接口拉起图库界面进行文件选择,文件选择成功后,返回PhotoSelectResult结果集
photoViewPicker.select(selectOptions)
.then((photoSelectResult: picker.PhotoSelectResult) => {
//用一个全局变量存储返回的uri
if (photoSelectResult.photoUris?.[0]) {
this.testFetchFrameByTime(photoSelectResult.photoUris[0])
}
}).catch((err: BusinessError) => {
console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})
}
// 获取缩略图
async testFetchFrameByTime(filePath: string) {
// 创建AVImageGenerator对象
let avImageGenerator: media.AVImageGenerator = await media.createAVImageGenerator()
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
let avFileDescriptor: media.AVFileDescriptor = { fd: file.fd };
avImageGenerator.fdSrc = avFileDescriptor;
// 初始化入参
let timeUs = 0
let queryOption = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC
let param: media.PixelMapParams = {
width: 300,
height: 400,
}
// 获取缩略图(promise模式)
this.pixelMap = await avImageGenerator.fetchFrameByTime(timeUs, queryOption, param)
// 释放资源(promise模式)
avImageGenerator.release()
console.info(`release success.`)
fs.closeSync(file);
}
}
更多关于HarmonyOS 鸿蒙Next photoAccessHelper.PhotoAsset.getThumbnail是否需要受限权限才可以使用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
photoAccessHelper.PhotoAsset.getThumbnail()方法需要申请受限ACL权限ohos.permission.READ_IAMGEVIDEO才可以使用,如果要不使用受限权限获取相册内视频缩略图的话,可以先使用PhotoViewPicker获取视频资源,再选取视频帧作为缩略图,但这种方法的局限性在于需要知道缩略图在视频的哪一帧,或者不强制获取的缩略图必须和原位置一样,否则就只能使用受限权限获取了
完整demo参考https://gitee.com/harmonyos_samples/VideoThumbnail中的第二种方式
HarmonyOS 鸿蒙Next photoAccessHelper.PhotoAsset.getThumbnail 不需要受限权限即可使用。
在HarmonyOS系统中,photoAccessHelper.PhotoAsset.getThumbnail
方法主要用于获取照片的缩略图。通常情况下,获取照片缩略图并不涉及用户的隐私数据深度访问,因此不需要特别的受限权限。这一操作更多是在用户已经授权应用访问其照片库的基础上进行的,而基础的照片库访问权限并不属于受限权限范畴。
然而,值得注意的是,尽管获取缩略图本身不需要受限权限,但应用在使用相关功能时仍需确保已获得用户的必要授权,并遵守相关的隐私政策和法律法规。此外,开发者在实现该功能时,也应遵循HarmonyOS的开发规范和最佳实践,确保应用的稳定性和安全性。
如果开发者在调用photoAccessHelper.PhotoAsset.getThumbnail
方法时遇到问题,建议检查以下几点:
- 确认应用已获得照片库访问权限。
- 检查方法调用的参数是否正确。
- 确认HarmonyOS系统版本与API兼容性。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。