HarmonyOS鸿蒙Next中获取相册列表缩略图并自定义展示图像

HarmonyOS鸿蒙Next中获取相册列表缩略图并自定义展示图像 请问实现自定义UI,内部展示获取到的相册、视频、照片,这种如何实现。现在支持吗?

3 回复

能否上传一下您的demo,我们这边测试一下再给您结论

获取视频缩率图可以参考,使用 avImageGenerator ,文档如下: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/avimagegenerator-V5#

完整示例

import { media } from '@kit.MediaKit';

import { photoAccessHelper } from '@kit.MediaLibraryKit';

import { fileIo, picker } from '@kit.CoreFileKit';

import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@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("txy " + err.message)

        }

      })
      Image(this.pix)
        .width(100)
        .height(100)
    }.height("100%").width("100%")
  }
}

更多关于HarmonyOS鸿蒙Next中获取相册列表缩略图并自定义展示图像的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,获取相册列表缩略图并自定义展示图像的过程主要涉及使用PhotoAccessHelperImage等API。首先,通过PhotoAccessHelper获取相册中的图片列表,可以使用PhotoAccessHelper.getPhotos()方法获取所有图片的URI列表。接着,通过Image组件加载并展示这些图片的缩略图。Image组件支持自定义属性,如widthheightscaleType等,可以根据需求调整缩略图的展示效果。通过ImageSource.createFromUri()方法将URI转换为ImageSource对象,再将其赋值给Image组件的src属性即可显示缩略图。如果需要进一步自定义展示效果,可以使用PixelMap对图像进行处理,如裁剪、缩放等操作,然后将处理后的PixelMap赋值给Image组件进行展示。整个过程不需要涉及Java或C语言,完全基于鸿蒙系统的API实现。

在HarmonyOS鸿蒙Next中,获取相册列表缩略图并自定义展示图像可以通过以下步骤实现:

  1. 权限申请:首先在config.json中申请相册访问权限。
  2. 获取相册列表:使用PhotoAccessHelper类获取相册列表,如PhotoAccessHelper.getAlbums()
  3. 获取缩略图:通过PhotoAccessHelper.getThumbnail()获取指定相册的缩略图。
  4. 自定义展示:将缩略图加载到Image组件中,并根据需求调整布局和样式。

示例代码:

Image image = new Image(context);
image.setPixelMap(thumbnailPixelMap);
image.setLayoutConfig(...);
回到顶部