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
可以使用如下方式获取:
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数组生成图片。如果生成的图片不正确,可能的原因包括:
-
数组格式错误:确保数组的格式与图片的宽度、高度和颜色格式匹配。每个int应代表一个像素的颜色值,通常为ARGB格式。
-
尺寸不匹配:检查数组长度是否等于图片的宽度乘以高度。如果尺寸不匹配,生成的图片会失真。
-
颜色格式问题:确保数组中的颜色值符合预期格式。ARGB格式中,A(alpha)通道应在最高位,R、G、B依次排列。
-
API使用错误:确认
PixelMap.create()
的参数是否正确传递,特别是宽度、高度和颜色格式。
建议仔细检查数组内容和API调用,确保所有参数正确无误。