1 个回答

可以参考下以下demo,通过转换ArrayBuffer的方式创建imageSource:

@State albumPath: string = '';
@State photoSize: number = 0;
@State pixelMap: PixelMap | undefined = undefined;

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];
console.info('albumPath: ' + this.albumPath) // 读取图片为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 buffer1 = new ArrayBuffer(this.photoSize);
fs.readSync(file.fd, buffer1);
fs.closeSync(file);
// 解码成PixelMap
const imageSource = image.createImageSource(buffer1);
let decodingOptions: image.DecodingOptions = {
  editable: true,
  desiredPixelFormat: 3,
}
//创建pixelMap
imageSource.createPixelMap(decodingOptions).then(async (pixelMap1: image.PixelMap) => {
  this.pixelMap = pixelMap1;
});