HarmonyOS鸿蒙Next中asset.getThumbnail获取的缩略图怎么看不到值?
HarmonyOS鸿蒙Next中asset.getThumbnail获取的缩略图怎么看不到值?
PhotoViewPicker选择的图片,asset.getThumbnail获取的缩略图怎么看不到值?
更多关于HarmonyOS鸿蒙Next中asset.getThumbnail获取的缩略图怎么看不到值?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
参考下面的Demo,pixelMap不一定是空的,可以在Image组件中显示出来:
import { common } from '@kit.AbilityKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { dataSharePredicates } from '@kit.ArkData';
import { image } from '@kit.ImageKit';
@Entry
@Component
struct PhotoPage {
@State imagePath: string = ''
@State pixelMap:image.PixelMap | undefined = undefined
private context = this as common.UIAbilityContext;
private uri:string = '';
build() {
Row() {
Column() {
Button("选择图片")
.onClick(() => {
this.selectPhoto()
})
Image(this.pixelMap).width(300).height(400)
}.width('100%')
}.height('100%')
}
selectPhoto() {
let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;// 过滤选择媒体文件类型为IMAGE
PhotoSelectOptions.maxSelectNumber = 1;// 选择媒体文件的最大数目
let photoPicker = new photoAccessHelper.PhotoViewPicker();
photoPicker.select(PhotoSelectOptions).then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {
console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(photoSelectResult));
this.uri = photoSelectResult.photoUris[0]
this.uriGetAssets()
})
}
async uriGetAssets() {
try {
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(this.context);
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
// 配置查询条件,使用PhotoViewPicker选择图片返回的uri进行查询
predicates.equalTo('uri', this.uri);
let fetchOption: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
// 得到uri对应的PhotoAsset对象,读取文件的部分信息
const asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
console.info('PhotoViewPicker asset displayName: ', asset.displayName);
console.info('PhotoViewPicker asset uri: ', asset.uri);
console.info('PhotoViewPicker asset photoType: ', asset.photoType);
// 获取缩略图
asset.getThumbnail((err, pixelMap) => {
if (err == undefined) {
this.pixelMap = pixelMap
console.info('PhotoViewPicker getThumbnail successful ' + pixelMap);
} else {
console.error('PhotoViewPicker getThumbnail fail', err);
}
});
} catch (error){
console.error('uriGetAssets failed with err: ' + JSON.stringify(error));
}
}
}
更多关于HarmonyOS鸿蒙Next中asset.getThumbnail获取的缩略图怎么看不到值?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我的用Image加载不出来呢,
在HarmonyOS鸿蒙Next中,asset.getThumbnail
方法用于获取媒体资源的缩略图。如果获取的缩略图看不到值,可能的原因包括:
- 资源不存在或路径错误:确保指定的媒体资源存在且路径正确。
- 缩略图未生成:某些媒体资源可能未生成缩略图,尝试使用
asset.getPixels
直接获取像素数据。 - 权限问题:检查应用是否具有访问媒体资源的权限。
- 设备兼容性:某些设备可能不支持特定格式的缩略图生成。
检查以上因素,确保代码逻辑正确,缩略图应能正常显示。
在HarmonyOS鸿蒙Next中,asset.getThumbnail
获取的缩略图可能为空或看不到值,常见原因包括:
- 资源文件不支持缩略图生成;
- 资源文件损坏或格式不支持;
- 权限未正确配置,导致无法访问资源。
建议检查资源文件类型、完整性,并确保应用已获取必要的存储权限。如果问题依旧,可以尝试使用其他方法获取缩略图或直接加载原图。