鸿蒙ext开发如何实现打开相册选图片功能
鸿蒙ext开发如何实现打开相册选图片功能
问题描述:鸿蒙ext如何实现打开相册选图片功能应用场景:用户个人中心自定义头像的时候,需要选择相册上传照片。解决方案:使用picker这个API实现从系统上获取相册图片这个点的,1、首先要实例一个选择参数PhotoSelectOpti 里面需要设置媒体文件类型还有一个数量2、然后—>实例一个选择器PhotoViewPicker,、通过自带
鸿蒙ext开发如何实现打开相册选图片功能
使用picker这个API实现从系统上获取相册图片这个点的,
1、首先要实例一个选择参数PhotoSelectOpti 里面需要设置媒体文件类型还有一个数量
2、然后—>实例一个选择器PhotoViewPicker,
、通过自带的——>select方法传入先前设置的选择参数即可完成选择并获取到选择图片的文件路径
4、解析文件路径转为PixelMap格式或者base64格式
5、再对接后端接口上传数据
代码语言:js复制// 导入选择器模块和文件管理模块
import { zipImageUtil} from '../utils/ZipImageUtil'
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { image } from '@kit.ImageKit';
import { fileIo as fs } from '@kit.CoreFileKit';
import { buffer as Buffer} from '@kit.ArkTS';
// 拉起相册,选择图片方法
class getPhotofromAlbum{
getAlbum: string = '显示相册中的图片';
pixel: image.PixelMap | undefined = undefined;
albumPath: string = '';
photoSize: number = 0;
async initData():Promise<string>{
try{
//创建图片-音频类型文件选择选项实例
let PhotoSelectOpti = new photoAccessHelper.PhotoSelectOpti();
PhotoSelectOpti.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
= 1; // 最多选择数量
//创建图库选择器实例,调用PhotoViewPicker.select接口拉起图库界面进行文件选择。文件选择成功后,返回PhotoSelectResult结果集。
let photoPicker = new photoAccessHelper.PhotoViewPicker();
let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(PhotoSelectOpti);
this.albumPath = photoSelectResult.photoUris[0]; //获得到选择图片的文件路径
// 使用file解析文件,并读取图片为buffer
ct file = (this.albumPath, fs.OpenMode.READ_OLY);
this.photoSize = fs.statSync(file.fd).size;
cole.info('Photo Size: ' + this.photoSize);
let buffer = new ArrayBuffer(this.photoSize);
fs.readSync(file.fd, buffer);
(file);
// 解码成PixelMap
ct imageSource = (buffer);
cole.log('imageSource: ' + JSO.stringify(imageSource));
let pixelMap = await ({});
//设置打包参数
ct imagePackerApi = ();
ct packOpts: image.PackingOption = { format: "image/jpeg", quality: 100 };
let imageBuffer: ArrayBuffer = new ArrayBuffer(1);
// 图片压缩或重新打包
imageBuffer = await imagePackerApi.packing(imageSource, packOpts);
imageBuffer = await zipImageUtil.packingImage(imageBuffer, pixelMap, 100, 500*1024); //压缩到500kb
cole.log('压缩后的字节长度:'+imageBuffer.byteLength/1024)
//转成base64地址
let base64Str:string = Buffer.from(imageBuffer).toString('base64')
return base64Str
}catch(e){
throw new Error(`相册 获取照片失败 : ${JSO.stringify(e)}`);
}
}
}
调用方法
代码语言:js复制 new getPictureFromAlbum().initData().then(res => {
let base64=res
})
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-25 10:16:27
推荐阅读
留言与评论(共有 17 条评论) |
本站网友 truecrypt | 2分钟前 发表 |
调用PhotoViewPicker.select接口拉起图库界面进行文件选择 | |
本站网友 成才 | 27分钟前 发表 |
let photoPicker = new photoAccessHelper.PhotoViewPicker(); let photoSelectResult | |
本站网友 鬼针草泡水喝的功效 | 23分钟前 发表 |
' + this.photoSize); let buffer = new ArrayBuffer(this.photoSize); fs.readSync(file.fd | |
本站网友 角质层是什么 | 19分钟前 发表 |
string = Buffer.from(imageBuffer).toString('base64') return base64Str }catch(e){ throw new Error(`相册 获取照片失败 : ${JSO.stringify(e)}`); } } }调用方法代码语言:js复制 new getPictureFromAlbum().initData().then(res => { let base64=res }) | |
本站网友 汕头房屋出租 | 2分钟前 发表 |
fs.OpenMode.READ_OLY); this.photoSize = fs.statSync(file.fd).size; cole.info('Photo Size | |
本站网友 利比亚大撤离 | 25分钟前 发表 |
100 | |
本站网友 临汾美食 | 29分钟前 发表 |
image.PackingOption = { format | |
本站网友 浦东金领国际 | 29分钟前 发表 |
buffer); (file); // 解码成PixelMap ct imageSource = (buffer); cole.log('imageSource | |
本站网友 嘉兴日报电子版 | 5分钟前 发表 |
首先要实例一个选择参数PhotoSelectOpti 里面需要设置媒体文件类型还有一个数量2 | |
本站网友 产妇下奶 | 19分钟前 发表 |
"image/jpeg" | |
本站网友 南京seo优化 | 3分钟前 发表 |
返回PhotoSelectResult结果集 | |
本站网友 新亚药业 | 20分钟前 发表 |
选择图片方法 class getPhotofromAlbum{ getAlbum | |
本站网友 免费下载小说的网站 | 4分钟前 发表 |
string = '显示相册中的图片'; pixel | |
本站网友 健康的减肥饮食 | 20分钟前 发表 |
首先要实例一个选择参数PhotoSelectOpti 里面需要设置媒体文件类型还有一个数量2 | |
本站网友 梦见别人送东西 | 1分钟前 发表 |
string = '显示相册中的图片'; pixel | |
本站网友 控制c | 16分钟前 发表 |
解决方案:使用picker这个API实现从系统上获取相册图片这个点的 |