【HarmonyOS】鸿蒙中如何获取用户相册图片

203 阅读1分钟

一、前言

开发中我们经常有获取相册中图片的需求,鸿蒙提供了3种获取用户相册图片的方式。我们对三种方式进行具体实现:

二、简介

1,使用系统选择器(PhotoViewPicker)

2,直接访问相册数据库(PhotoAccessHelper需权限)

3、 文件选择器(FilePicker)

三、具体实现

1、方式1系统选择器(PhotoViewPicker)通过系统提供的图片选择器,用户主动选择目标图片

import { photoAccessHelper } from '@kit.MediaLibraryKit';
let photoPicker = new photoAccessHelper.PhotoViewPicker();
photoPicker.select({MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, // 指定图片类型
maxSelectNumber: 1 // 设置最大选择数量}).then((res) => {
    console.log('所选图片URI:', res.photoUris[0]
); // 获取图片URI}
).catch((err) => {
    console.error('选择失败:', err);
});

2、通过 PhotoAccessHelper 直接查询相册内容:

import PhotoAccessHelper from '@ohos.photo.PhotoAccessHelper';let photoHelper = new PhotoAccessHelper();photoHelper.getPhotos({ limit: 10 }).then((photos) => {photos.forEach(photo => {   console.log('相册图片URI:', photo.uri); // 遍历获取图片URI});}).catch((err) => {   console.error('查询失败:', err);});

3、文件选择器(FilePicker)获取多种类型文件(含图片),但仅限用户主动选择:

import picker from '@ohos.file.picker';let filePicker = new picker.PhotoViewPicker(); // 文件选择器filePicker.select().then((uris) => {  console.log('文件URI列表:', uris[0]);}).catch((err) => {  console.error('文件选择失败:', err);});

四、优缺点

1,使用系统选择器(PhotoViewPicker)

  • Ui无法修改成Ui设计样式

2,直接访问相册数据库(PhotoAccessHelper需权限)

  • 需申请 ohos.permission.READ_IMAGEVIDEO 权限 ,该权限是受限权限(申请此权限的特殊场景与功能: 应用需要克隆、备份或同步图片/视频类文件);
  • 用户需在隐私弹窗中授权。

3、 文件选择器(FilePicker)

  • ‌无法直接获取全部图片‌,必须由用户手动选择;
  • 无需申请权限,依赖用户交互。