可以参考如下demo:import photoAccessHelper from '@ohos.file.photoAccessHelper'; import { BusinessError } from '@ohos.base'; import dataSharePredicates from '@ohos.data.dataSharePredicates'; import { picker } from '@kit.CoreFileKit'; @Entry @Component struct Index { // 定义一个uri数组,用于接收PhotoViewPicker选择图片返回的uri @State uris: Array<string> = []; context = getContext(this); // 调用PhotoViewPicker.select选择图片 async photoPickerGetUri() { try { let photoViewPicker = new picker.PhotoViewPicker(); photoViewPicker.select().then(async (PhotoSelectResult: picker.PhotoSelectResult) => { console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); this.uris = PhotoSelectResult.photoUris; this.uriGetAssets() }).catch((err: BusinessError) => { console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err)); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err)); } } async uriGetAssets() { try { let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(this.context); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); // 配置查询条件,使用PhotoViewPicker选择图片返回的uri进行查询 predicates.equalTo('uri', this.uris[0]); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [photoAccessHelper.PhotoKeys.WIDTH, photoAccessHelper.PhotoKeys.HEIGHT, photoAccessHelper.PhotoKeys.TITLE, photoAccessHelper.PhotoKeys.SIZE, photoAccessHelper.PhotoKeys.DURATION], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); // 得到uri对应的PhotoAsset对象,读取文件的部分信息 const asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); console.info('asset displayName: ', asset.displayName); console.info('asset uri: ', asset.uri); console.info('asset photoType: ', asset.photoType); console.info('asset width: ', asset.get(photoAccessHelper.PhotoKeys.WIDTH)); console.info('asset height: ', asset.get(photoAccessHelper.PhotoKeys.HEIGHT)); console.info('asset SIZE: ' + asset.get(photoAccessHelper.PhotoKeys.SIZE)); console.info('asset DURATION: ' + asset.get(photoAccessHelper.PhotoKeys.DURATION)); // 获取缩略图 asset.getThumbnail((err, pixelMap) => { if (err == undefined) { console.info('getThumbnail successful ' + JSON.stringify(pixelMap)); } else { console.error('getThumbnail fail', err); } }); } catch (error) { console.error('uriGetAssets failed with err: ' + JSON.stringify(error)); } } build() { Button('获取文件大小').width(100).height(100) .onClick(() => { this.photoPickerGetUri() }) } }
可以参考如下demo: