HarmonyOS 读取PixelMap的ArrayBuffer,再使用读取的数据创建PixelMap展示,图片变成了黑白,丢失了颜色。
读取PixelMap的ArrayBuffer,再使用读取的数据创建PixelMap,图片变成了黑白,丢失了颜色。
1、读取PixelMap的ArrayBuffer:
async pixelMapToArray(pixelMap:PixelMap){
  //size为需要创建的像素buffer大小,取值为:height * width *4
  let size = pixelMap.getPixelBytesNumber();
  const readBuffer: ArrayBuffer = new ArrayBuffer(size);
  if (pixelMap) {
    await pixelMap.readPixelsToBuffer(readBuffer);
    let bufferSize = readBuffer.byteLength;
    return readBuffer;
  }
  return readBuffer;
}
2、使用读取的数据创建PixelMap:
arrayToPixelMap(readBuffer: ArrayBuffer | null, w:number, h:number, callback:(pixelMap:PixelMap)=>void){
  let opts: image.InitializationOptions = { editable: true, pixelFormat: image.PixelMapFormat.RGBA_8888,
    size: { height: h, width: w } }
  image.createPixelMap(readBuffer, opts).then((pixelMap)=>{
    callback(pixelMap);
  });
}
3、调用:
PhotoChangeUtils.pixelMapToArray(pixelMap).then((buffer)=>{
  let imageInfo = pixelMap.getImageInfoSync();
  let w = imageInfo.size.width;
  let h = imageInfo.size.height;
  PhotoChangeUtils.arrayToPixelMap(buffer, w, h, (pixelMap)=>{
    this.livePixelMap = pixelMap;
  } )
})
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 通过资源管理对象来读取资源目录下的图片文件并创建pixelMap 
2723浏览  • 1回复 待解决
HarmonyOS 使用image展示pixelMap无法展示图片 ,但有确切的值 
1539浏览  • 1回复 待解决
HarmonyOS使用ArrayBuffer 构造PixelMap 数据报错问题 
1884浏览  • 1回复 待解决
图片文件与PixelMap、ArrayBuffer如何互相转换? 
1291浏览  • 1回复 待解决
HarmonyOS中使用ArrayBuffer 构造PixelMap 数据报错问题? 
1076浏览  • 0回复 待解决
可以以颜色创建pixelmap吗 
1132浏览  • 1回复 待解决
HarmonyOS pixelmap读到的数据调整options后文件损坏,无法再当成图片使用,再次传入createpixelmap报错Create PixelMap error 
682浏览  • 1回复 待解决
HarmonyOS 从文件读取图片为pixelMap 怎样做平铺和纯色填充、图片裁切 
819浏览  • 1回复 待解决
HarmonyOS  pixelMap转成ArrayBuffer 
1806浏览  • 1回复 待解决
HarmonyOS 通过RawFileEntry读取PNG图片PixelMap,经ImagePacker编码,为JPEG格式。 
10841浏览  • 3回复 待解决
HarmonyOS 如何在A组件创建PixelMap,在B子组件展示图片 
1194浏览  • 1回复 待解决
HarmonyOS 存在应用沙箱目录内的图片文件如何转换为PixelMap以及ArrayBuffer类型的数据 
900浏览  • 1回复 待解决
HarmonyOS createPixelMap 创建 PixelMap 发现图片变黄了 
1288浏览  • 1回复 待解决
HarmonyOS 通过RGBA数据创建PixelMap,保存到文件中是纯黑的图片 
1286浏览  • 1回复 待解决
HarmonyOS 文件读取ArrayBuffer中文乱码的问题 
1369浏览  • 1回复 待解决
native层创建的pixelmap,arraybuffer等内存数据,传给ts层使用,最后是ts层的系统自动释放回收内存吗? 
1609浏览  • 1回复 待解决
HarmonyOS 如何把Webview截图转ArrayBuffer或者pixelMap 
812浏览  • 1回复 待解决
HarmonyOS rn打包的图片文件名字变成了数字加字母的格式,没法使用 
837浏览  • 1回复 待解决
HarmonyOS 如何使用image.createPixelMaph创建PixelMap 
815浏览  • 1回复 待解决
HarmonyOS 怎么改pixelmap颜色 
894浏览  • 1回复 待解决
HarmonyOS PixelMap加载图片 
1203浏览  • 1回复 待解决
根据Buffer生成的PixelMap,显示颜色错误 
1494浏览  • 1回复 待解决
HarmonyOS 读取图片数据接口,执行顺序问题 
991浏览  • 1回复 待解决
HarmonyOS 使用CAPI创建pixelmap设置pixelFormat不生效 
945浏览  • 1回复 待解决
HarmonyOS 获取网络图片PixelMap 
1185浏览  • 1回复 待解决





















由image.createPixelMap描述可知通过属性创建PixelMap,默认采用BGRA_8888格式处理数据,通过Promise返回结果,即使创建pixelMap时的buffer和options都是rgba格式的,当前接口只能处理BGRA流,建议尝试统一更改为BGRA_8888。
参考示例: