HarmonyOS鸿蒙Next中怎么不通过文件选择器,直接获取图库中相册的图片信息?

HarmonyOS鸿蒙Next中怎么不通过文件选择器,直接获取图库中相册的图片信息? 我想在生命周期中获取图库中的信息,直接在我自定义的相册中展示图库中的图片,目前遇到的问题是不知道怎么获取。

3 回复

以通过使用相册模块获取图库中的图片信息。但需要申请权限:ohos.permission.READ_IMAGEVIDEO 参考示例:

async function getAllImageUris(albumName?: string,context?:common.UIAbilityContext): Promise<string[]> {
  const  phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context)
  const predicates = new dataSharePredicates.DataSharePredicates();
  // 可选:只查某个相册
  if (albumName) {
    predicates.equalTo(photoAccessHelper.AlbumKeys.ALBUM_NAME, albumName);
  }
  const fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [], // 如需 width/height 等,可在此按 PhotoKeys 指定
    predicates
  };
  try {
    const result = await phAccessHelper.getAssets(fetchOptions);
    const assets = await result.getAllObjects(); // 全部 PhotoAsset
    const uris = assets.map(asset => asset.uri);  // 全部 URI
    result.close(); // 记得关闭 FetchResult
    return uris;
  } catch (err) {
    console.error('getAssets failed: ' + JSON.stringify(err));
    return err
  }
}

更多关于HarmonyOS鸿蒙Next中怎么不通过文件选择器,直接获取图库中相册的图片信息?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,可通过@ohos.file.photosLibrary接口直接访问图库。使用photosLibrary.getPhotoAssets方法获取相册媒体资源,通过FetchResult对象遍历图片信息。需声明ohos.permission.READ_IMAGEVIDEO权限,并配置metadata对象中的bundleName参数。获取的图片信息包含URI、尺寸、创建时间等元数据,无需通过文件选择器交互。

在HarmonyOS Next中,可以通过媒体库查询接口直接访问图库相册信息,无需依赖文件选择器。使用@ohos.file.photoAccessHelper模块的getPhotoAccessHelper()方法获取相册辅助对象,然后通过getAlbums()查询相册列表。对于具体相册,用getAssets()获取媒体资源(如图片),再通过photoAccessHelper.PhotoAssetget()方法读取图片属性(如uri、日期、尺寸等)。示例代码:

import photoAccessHelper from '@ohos.file.photoAccessHelper';

// 获取photoAccessHelper实例
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);

// 查询相册列表(例如获取第一个相册)
let albums = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubType.USER_GENERIC);
let targetAlbum = albums[0];

// 获取相册中的图片资源
let fetchResult = await targetAlbum.getAssets();
let firstAsset = await fetchResult.getFirstObject();

// 读取图片信息(如uri)
let photoUri = firstAsset.uri;

注意:需申请ohos.permission.READ_IMAGEVIDEO权限,并在module.json5中配置。此方法可直接集成到应用生命周期,实现自定义相册展示。

回到顶部