根据Buffer生成的PixelMap,显示颜色错误
一个ArrayBuffer,内部为RGBA_8888格式的颜色数据。将这个ArrayBuffer转成PixelMap, 最后存成文件。打开这个文件,发现显示颜色错误。怀疑是把RGBA_8888数据当成BGRA_8888处理了,修改pixelFormat参数无效。
以下是出问题的示例代码:
let frameCb = (color: ArrayBuffer, index: number): boolean => { 
  hilog.error(0, "marvel", "generateVideoFrame pts: %{public}d",index); 
  let opts: image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: param.imgHeight, width: param.imgWidth } } 
  image.createPixelMap(color, opts).then((pixelMap: image.PixelMap) => { 
    console.info('Succeeded in creating pixelmap.'); 
    let packOpts : image.PackingOption = { format:"image/png", quality:98 }; 
    const imagePackerApi = image.createImagePacker(); 
    const context : Context = getContext(this); 
    const path : string = context.cacheDir + "/pixel_map.jpg"; 
    let file = fs.openSync(path, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE); 
    imagePackerApi.packToFile(pixelMap, file.fd, packOpts).then(() => { 
      console.info('Succeeded image/jpeg.'); 
    }).catch((error : BusinessError) => { 
      console.error('Failed to pack the image. And the error is: ' + error); 
    }) 
 
  }).catch((error: BusinessError) => { 
    console.error('Failed to create pixelmap.'); 
  }) 
  return false; 
};
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 验证pixelmap数据buffer转base64是否正常 
2957浏览  • 1回复 待解决
HarmonyOS 如何给PixelMap设置圆角或生成圆形的PixelMap 
1198浏览  • 1回复 待解决
HarmonyOS 怎么改pixelmap颜色 
889浏览  • 1回复 待解决
可以以颜色创建pixelmap吗 
1132浏览  • 1回复 待解决
HarmonyOS 如何根据ResourceColor获取真实的RGB颜色值 
1889浏览  • 1回复 待解决
HarmonyOS 是否支持根据绘制逻辑生成imagedata 
884浏览  • 1回复 待解决
HarmonyOS 根据视频路径生成缩略图 
895浏览  • 1回复 待解决
HarmonyOS 如何实现根据进度设置部分文本的颜色 
1085浏览  • 1回复 待解决
HarmonyOS 读取PixelMap的ArrayBuffer,再使用读取的数据创建PixelMap展示,图片变成了黑白,丢失了颜色。 
1309浏览  • 1回复 待解决
HarmonyOS PhotoViewPicker获取的 uri不能直接生成 pixelMap 来使用? 
1031浏览  • 1回复 待解决
HarmonyOS image.PixelMap的writePixels(area,..)返回错误62980115 
1142浏览  • 1回复 待解决
HarmonyOS 二维码生成,想要生成背景颜色为透明的,设置无效 
1333浏览  • 1回复 待解决
HarmonyOS 使用@ohos/buffer下的buffer类时,获取buffer.byteoffset 的值为0? 
999浏览  • 1回复 待解决
List组件divider颜色显示透List组件颜色 
1022浏览  • 1回复 待解决
文字背景颜色渐变显示 
3207浏览  • 1回复 待解决
HarmonyOS 根据不同渠道将不同的源码文件生成到包内 
1072浏览  • 1回复 待解决
根据指定字符串,随机生成 指定长度的字符串 
1764浏览  • 1回复 待解决
如何生成一个十六进制的颜色色值? 
1494浏览  • 1回复 待解决
HarmonyOS 双路预览流获取的数据,无法生成一个 pixelMap 
1388浏览  • 1回复 待解决
HarmonyOS Image组件显示PixelMap类型数据问题 
1324浏览  • 1回复 待解决
bean类系统自动生成的set方法报语法错误 
2608浏览  • 1回复 待解决
HarmonyOS 按钮设置了不同状态下的字体颜色,但是都只显示Normal的颜色 
1126浏览  • 1回复 待解决
HarmonyOS 在有键盘的页面,Toast显示位置错误 
1340浏览  • 1回复 待解决
3DES如何根据指定KEY、IV生成SymKey对称秘钥? 
1665浏览  • 1回复 待解决
HarmonyOS 在native侧创建的pixelMap,传给ArkTS侧使用时,会报出colorspace的错误 
1093浏览  • 1回复 待解决





















以流创建pixelmap,该接口只能接受bgra格式,按照bgra去读取流做处理。接口参数设置的foramt是出参,如果入参流的排列不是bgra,无论怎么设,都会导致颜色错误。 可将入参流调整为bgra格式。