HarmonyOS鸿蒙Next中PixelMap create()根据int数组生成的图片不对

HarmonyOS鸿蒙Next中PixelMap create()根据int数组生成的图片不对 发现问题起因:
本来要对图片进行 叠加,滤镜,灰度等操作;
事实:发现图片不改变图片任何字节生成的图片都不对;

操作步骤:
2,图片正常显示;

Image image1.setPixelMap(ResourceTable.Media_pixel_test_2);

3,第二个Image显示,也正常

Image image2.setPixelMap(image1.getPixelMap());

4,取出字节,然后又转化回PixelMap;显示缺不是原来的图片;

PixelMap px = image1.getPixelMap();
PixelMap.InitializationOptions initializationOptions = new PixelMap.InitializationOptions();
initializationOptions.pixelFormat = PixelFormat.ARGB_8888;
int width = px.getImageInfo().size.width;
int height = px.getImageInfo().size.height;
initializationOptions.size = new Size(width, height);
initializationOptions.editable = true;
IntBuffer pb = IntBuffer.allocate(width * height);
px.readPixels(pb);
int[] input = pb.array();
PixelMap bitmap = PixelMap.create(input, initializationOptions);
resultimg.setPixelMap(bitmap);

效果图

提供开发图片:其他任意图片都是一样结果


更多关于HarmonyOS鸿蒙Next中PixelMap create()根据int数组生成的图片不对的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

可以使用如下方式获取:

int[] input = new int[width*height];
px.readPixels(input,0,width,new Rect(0,0,width,height));

更多关于HarmonyOS鸿蒙Next中PixelMap create()根据int数组生成的图片不对的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发者您好,这个问题已经反馈给研发,请您耐心等待一下。

开发者你好,收到你的反馈,我们会尽快转发相关技术验证,请耐心等待。

在HarmonyOS鸿蒙Next中,PixelMap.create()方法用于从int数组生成图片。如果生成的图片不正确,可能的原因包括:

  1. 数组格式错误:确保数组的格式与图片的宽度、高度和颜色格式匹配。每个int应代表一个像素的颜色值,通常为ARGB格式。

  2. 尺寸不匹配:检查数组长度是否等于图片的宽度乘以高度。如果尺寸不匹配,生成的图片会失真。

  3. 颜色格式问题:确保数组中的颜色值符合预期格式。ARGB格式中,A(alpha)通道应在最高位,R、G、B依次排列。

  4. API使用错误:确认PixelMap.create()的参数是否正确传递,特别是宽度、高度和颜色格式。

建议仔细检查数组内容和API调用,确保所有参数正确无误。

回到顶部