HarmonyOS开发中 pixelmap深拷贝问题?以下方式拷贝pixelmap得到的图片颜色有偏差,同样位置的像素,如果原图是红色,拷贝图片显示蓝色,反之亦然。
static async copyPixelMap(pm: PixelMap): Promise<PixelMap | null> {
const imageInfo: image.ImageInfo = await pm.getImageInfo();
const buffer: ArrayBuffer = new ArrayBuffer(pm.getPixelBytesNumber());
await pm.readPixelsToBuffer(buffer);
const opts: image.InitializationOptions = {
editable: true,
pixelFormat: image.PixelMapFormat.RGBA_8888,//这里用RGBA_8888效果一样
size: { height: imageInfo.size.height, width: imageInfo.size.width }
};
return await image.createPixelMap(buffer, opts);
}
copy前先确认下源pixelmap的格式:https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...
方法1:https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...
方法2:readpixelmaptobuffer拿到的BGRA_8888,抽个方法把[[b,g,r,a]…] 转换成[[r,g,b,a]…]。