HarmonyOS鸿蒙Next中asset.getThumbnail获取的缩略图怎么看不到值?

HarmonyOS鸿蒙Next中asset.getThumbnail获取的缩略图怎么看不到值?

PhotoViewPicker选择的图片,asset.getThumbnail获取的缩略图怎么看不到值?

cke_147.png


更多关于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方法用于获取媒体资源的缩略图。如果获取的缩略图看不到值,可能的原因包括:

  1. 资源不存在或路径错误:确保指定的媒体资源存在且路径正确。
  2. 缩略图未生成:某些媒体资源可能未生成缩略图,尝试使用asset.getPixels直接获取像素数据。
  3. 权限问题:检查应用是否具有访问媒体资源的权限。
  4. 设备兼容性:某些设备可能不支持特定格式的缩略图生成。

检查以上因素,确保代码逻辑正确,缩略图应能正常显示。

在HarmonyOS鸿蒙Next中,asset.getThumbnail获取的缩略图可能为空或看不到值,常见原因包括:

  1. 资源文件不支持缩略图生成;
  2. 资源文件损坏或格式不支持;
  3. 权限未正确配置,导致无法访问资源。

建议检查资源文件类型、完整性,并确保应用已获取必要的存储权限。如果问题依旧,可以尝试使用其他方法获取缩略图或直接加载原图。

回到顶部