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

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next createPixelMap 创建 PixelMap 发现图片变黄了
<markdown _ngcontent-xyy-c237="" class="markdownPreContainer">

我使用以下代码,将一张图片解析后重新创建 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,
    }
);
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>

</markdown>

关于HarmonyOS 鸿蒙Next createPixelMap 创建 PixelMap 发现图片变黄了的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。
7 回复

不知楼上兄弟有没有解决这个问题? 

pixelFormat: pixelMap.getImageInfoSync().pixelFormat

我用原pixelMap的格式得到的目标PixelMap同样发黄。

image.createPixelMap(colors: ArrayBuffer, options: InitializationOptions): Promise<PixelMap> 其中options将srcPixelFormat设置为原图片格式即可解决。

遇到同样的问题,楼主有解决吗?

解决了,我在 gl 中将颜色格式转了。这里一定要 gbra 的。

gl是指什么。 是说修改pixelFormat:这个字段里面的值吗? 我从0试到9 都是一样的变色了

我的现实场景是 gles 渲染图片,导出 rgba 格式的,用 pixelmap 编码只支持 bgra 的,所以我用 gl 导出时转了下。

把RGBA_8888改成 BGRA_8888
回到顶部