HarmonyOS createPixelMap 创建 PixelMap 发现图片变黄了

我使用以下代码,将一张图片解析后重新创建 PixelMap 进行显示,但是图片变黄了。

const imagePath = runtimeInfo.context.filesDir + "/test_res/original_image_1.jpeg";
const imageSource = image.createImageSource(imagePath);
const pixelMap = await imageSource.createPixelMap({
  editable: true,
  desiredPixelFormat: image.PixelMapFormat.RGBA_8888,
});
const imageInfo = await pixelMap.getImageInfo();
this.orgImage = pixelMap;
const buffer = new ArrayBuffer(pixelMap.getPixelBytesNumber());
await pixelMap.readPixelsToBuffer(buffer);
this.copyImage = await image.createPixelMap(
  buffer,
  {
    size: {
      width: imageInfo.size.width,
      height: imageInfo.size.height
    },
    pixelFormat: image.PixelMapFormat.RGBA_8888,
  }
);

无论是模拟器还是真机都有此问题,api 9、11 都有此问题,需要如何解决?

HarmonyOS
6天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

第一个createpixelmap是解码,图片解码出来的pixelmap默认是rgba排列的(如需指定,可设置desiredFormat)。如果是以RGBA去进行读取这段buffer,那格式是匹配的,所以gl渲染出来的是正常的。改为bgra会颜色错位

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

分享
微博
QQ
微信
回复
6天前
相关问题
Native Image模块API-OH_PixelMap_CreatePixelMap
1826浏览 • 1回复 待解决
pixelMap复制之后为什么会
523浏览 • 1回复 待解决
HarmonyOS PixelMap加载图片
111浏览 • 1回复 待解决
HarmonyOS 获取网络图片PixelMap
97浏览 • 1回复 待解决
可以以颜色创建pixelmap
395浏览 • 1回复 待解决
PixelMap怎么保存成图片文件
540浏览 • 1回复 待解决
HarmonyOS 单点调试
70浏览 • 1回复 待解决
如何用PixelMap处理图片
2157浏览 • 1回复 待解决
HarmonyOS 网络图片如何转换成PixelMap
100浏览 • 1回复 待解决
HarmonyOS image.createPixelMap使用问题
293浏览 • 1回复 待解决