一、前言
开发中我们经常有获取相册中图片的需求,鸿蒙提供了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)
1.1 Ui无法修改成Ui设计样式
2,直接访问相册数据库(PhotoAccessHelper需权限)
2.1 需申请 ohos.permission.READ_IMAGEVIDEO 权限 ,该权限是受限权限(申请此权限的特殊场景与功能: 应用需要克隆、备份或同步图片/视频类文件);
2.2 用户需在隐私弹窗中授权。
3、 文件选择器(FilePicker)
3.1无法直接获取全部图片,必须由用户手动选择7;
3.2无需申请权限,依赖用户交互。