如何读取相册中的图片

如何读取相册中的图片

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
相关问题
如何保存本地图片相册
229浏览 • 1回复 待解决
如何保存一张PNG图片相册
596浏览 • 1回复 待解决
如何保存网络图片相册
218浏览 • 1回复 待解决
如何相册图片进行编辑裁剪
778浏览 • 1回复 待解决
求大佬告知如何保存图片相册
363浏览 • 1回复 待解决
OpenHarmony 设备 如何相册传个图片
1209浏览 • 2回复 待解决
拉起相册选择图片页面失败
536浏览 • 1回复 待解决
获取网络图片并保存到相册
420浏览 • 1回复 待解决
有谁知道如何图片保存到相册
452浏览 • 1回复 待解决
pthread创建线程如何读取rawfile
833浏览 • 1回复 待解决
进入相册或拍照选择图片做头像
12216浏览 • 2回复 已解决
通过相册名获取相册资源
383浏览 • 1回复 待解决
无法读取到hsp模块rawfile文件
774浏览 • 1回复 待解决