HarmonyOS 鸿蒙Next 通过RGBA数据创建PixelMap,保存到文件中是纯黑的图片

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 鸿蒙OS

我的RGBA数据是从opengl中的纹理读取出来的,拿到RGBA数据后在TS层后打印日志查看buffer数据是正常的,但是通过createPixelMapSync创建PixelMap后再writeBufferToPixels最后再保存到文件中,查看jpg文件是黑色的图片

2 回复

传入createPixelMapSync的数据是SharedArrayBuffer,转为ArrayBuffer解决

更多关于HarmonyOS 鸿蒙Next 通过RGBA数据创建PixelMap,保存到文件中是纯黑的图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,通过RGBA数据创建PixelMap并保存为图片文件时,如果遇到输出是纯黑图片的问题,通常是因为在创建或保存过程中数据未正确处理或格式设置不正确。

确保以下几点:

  1. RGBA数据的每个像素值(红、绿、蓝、透明度)范围正确(0-255)。
  2. 创建PixelMap时,指定的宽度、高度以及像素格式(如PixelFormat.RGBA_8888)与数据匹配。
  3. 使用PixelMap.save()方法保存图片时,文件格式(如Bitmap.CompressFormat.PNG)与数据格式兼容。
  4. 检查是否有代码逻辑错误,如错误的像素索引或数据覆盖,导致所有像素被设置为黑色(R=0, G=0, B=0)。

示例代码(简化版):

// 假设rgbaData是包含RGBA值的byte数组,width和height是图片的宽度和高度
PixelMap.InitializationOptions initOptions = new PixelMap.InitializationOptions();
initOptions.setWidth(width);
initOptions.setHeight(height);
initOptions.setPixelFormat(PixelFormat.RGBA_8888);
PixelMap pixelMap = PixelMap.create(initOptions);
pixelMap.writePixels(rgbaData, width * 4, 0, width, height);
FileOutputStream fos = new FileOutputStream("path/to/output.png");
pixelMap.save(fos, Bitmap.CompressFormat.PNG, 100);
fos.close();

注意:上述代码为示例,并非鸿蒙实际API,请替换为鸿蒙相应API。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部