如何读取相册中的图片

如何读取相册中的图片

HarmonyOS
2024-06-12 00:03:04
浏览
收藏 1
回答 1
待解决
回答 1
按赞同
/
按时间
fanyu0803

相册选择图片生成PixelMap办法:通过Picker打开相册选择照片,打开返回的uri获得文件fd,通过fd构造imageSource,然后根据imageSource创建pixmap。

以下代码展示了拉起相册,以及读取图片为buffer并转换成PixelMap:

import photoAccessHelper from '@ohos.file.photoAccessHelper'; 
import image from '@ohos.multimedia.image'; 
import fs from '@ohos.file.fs'; 
 
@Entry 
@Component 
struct Index { 
  @State getAlbum: string = '显示相册中的图片'; 
  @State pixel: image.PixelMap | undefined = undefined; 
  @State albumPath: string = ''; 
  @State photoSize: number = 0; 
 
  async getPictureFromAlbum() { 
    // 拉起相册,选择图片 
    let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); 
    PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; 
    PhotoSelectOptions.maxSelectNumber = 1; 
    let photoPicker = new photoAccessHelper.PhotoViewPicker(); 
    let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(PhotoSelectOptions); 
    this.albumPath = photoSelectResult.photoUris[0]; 
 
    // 读取图片为buffer 
    const file = fs.openSync(this.albumPath, fs.OpenMode.READ_WRITE); 
    this.photoSize = fs.statSync(file.fd).size; 
    console.info('Photo Size: ' + this.photoSize); 
    let buffer = new ArrayBuffer(this.photoSize); 
    fs.readSync(file.fd, buffer); 
    fs.closeSync(file); 
 
    // 解码成PixelMap 
    const imageSource = image.createImageSource(buffer); 
    console.log('imageSource: ' + JSON.stringify(imageSource)); 
    this.pixel = await imageSource.createPixelMap({}); 
  } 
 
  // ...... 
}
分享
微博
QQ
微信
回复
2024-06-13 00:12:17
相关问题
如何编辑裁剪相册图片
547浏览 • 1回复 待解决
如何保存本地图片相册
1062浏览 • 1回复 待解决
如何保存一张PNG图片相册
1843浏览 • 1回复 待解决
如何保存网络图片相册
725浏览 • 1回复 待解决
如何相册图片进行编辑裁剪
1788浏览 • 1回复 待解决
拉起相册选择图片页面失败
1934浏览 • 1回复 待解决
HarmonyOS 保存图片相册问题
354浏览 • 1回复 待解决
如何图片和文案结合,保存到相册
219浏览 • 0回复 待解决
HarmonyOS如何上传图片到模拟器相册
912浏览 • 1回复 待解决
OpenHarmony 设备 如何相册传个图片
2315浏览 • 2回复 待解决
求大佬告知如何保存图片相册
1148浏览 • 1回复 待解决
HarmonyOS图片保存相册问题
431浏览 • 1回复 待解决
HarmonyOS 保存图片相册权限问题
278浏览 • 1回复 待解决