HarmonyOS 相册选择视频后, 获取的视频缩略图展示不了

最后的pixelMap展示不出。

let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(getContext(this))
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
// 配置查询条件,使用PhotoViewPicker选择图片返回的uri进行查询
predicates.equalTo('uri', uri);
let fetchOption: photoAccessHelper.FetchOptions = {
  fetchColumns: [photoAccessHelper.PhotoKeys.WIDTH, photoAccessHelper.PhotoKeys.HEIGHT, photoAccessHelper.PhotoKeys.TITLE, photoAccessHelper.PhotoKeys.DURATION],
  predicates: predicates
};
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
// 得到uri对应的PhotoAsset对象,读取文件的部分信息
const asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
// 获取缩略图
const pixelMap = await asset.getThumbnail({width: w, height: h})
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

更简单的获取缩率图场景,使用avImageGenerator。https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/avimagegenerator-V5#完整示例

@Component
export struct PhotoPickerThPage {
  @State pix: PixelMap | undefined = undefined;

  aboutToAppear(): void {
  }

  build() {
    Stack() {
      Button("拉起 picker 并写入系统相册")
        .onClick(async () => {
          let avImageGenerator: media.AVImageGenerator = await media.createAVImageGenerator();
          let timeUs = 0;
          let queryOption = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC;
          let param: media.PixelMapParams = {};
          let options = new photoAccessHelper.PhotoSelectOptions();
          options.MIMEType = photoAccessHelper.PhotoViewMIMETypes.VIDEO_TYPE;
          let photoPicker = new photoAccessHelper.PhotoViewPicker();
          // 获取图片结果
          let res: picker.PhotoSelectResult = await photoPicker.select(options);
          try {
            let file = fileIo.openSync(res.photoUris[0], fileIo.OpenMode.READ_ONLY);
            avImageGenerator.fdSrc = {fd: file.fd};
            // 获取缩略图
            this.pix = await avImageGenerator.fetchFrameByTime(timeUs, queryOption, param);
          } catch (e) {
            let err = e as BusinessError
            console.error(err.message)
          }
        })
    }.height("100%")
    .width("100%")
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
缩略图,如何获取文件缩略图
750浏览 • 1回复 待解决
HarmonyOS 视频缩略图问题
18浏览 • 1回复 待解决
HarmonyOS 根据视频路径生成缩略图
78浏览 • 1回复 待解决
HarmonyOS读取视频缩略图问题求助
659浏览 • 1回复 待解决
鸿蒙能获取图片指定大小缩略图
9620浏览 • 1回复 待解决
HarmonyOS获取相册视频宽高问题
484浏览 • 1回复 待解决
HarmonyOS 获取相册图片和视频ID
51浏览 • 1回复 待解决