Note 4和Nexus 5之间的Android PNG位图压缩无法正常工作

时间:2014-12-01 19:00:59

标签: android bitmap compression png

你好一直在使用没有问题的位图转换到PNG来保持透明度。然后将流字节数组发送到其他设备。

  

bmp.compress(CompressFormat.PNG,100,stream);

到目前为止,这一直运行良好,直到我开始使用带有Android 5.0的Nexus5进行测试 和一个注释4与android 4.4.4。

到目前为止,我已经使用了多个设备(注1,注2,S3,S4等),所有这些设备都在Nexus 5上正确接收了PNG。

当我使用Note 4压缩时,Nexus 5似乎无法解码字节数组

  

Bitmap image = BitmapFactory.decodeByteArray(arr,0,arr.length);

图片为空。 接收该编码PNG的其他设备能够使用相同的代码接收和处理它... 即使我尝试将PNG移动到Nexus,我也无法在设备上打开文件,甚至尝试使用照片应用查看图片我收到消息"未找到媒体"。使用在其他设备上生成的PNG,我完全没有问题。

我刚刚尝试了其他方法来尝试识别问题...我已经使用应用程序生成png图像(https://play.google.com/store/apps/details?id=com.jun.shop_image_editing_engver&hl=en),如果我在NOTE上生成PNG 4我无法在NEXUS上打开它,如果我在Note 2上生成PNG,我可以打开它。

有没有人有这样的问题?

感谢您的帮助

编辑:只是为了澄清,其他设备可以打开NOTE 4生成的图像(下面的眼睛就是这样的图像)

png I compressed with the note4

2 个答案:

答案 0 :(得分:0)

对于问题中包含的图像,我看到zlib压缩数据的检查值出错。图像的制作者犯了一个错误,或者数据在传输过程中被破坏了。图像的接收者可以选择对数据中的此类错误或多或少地宽容,因此在某些情况下可能会显示,但在其他情况下则不会。

答案 1 :(得分:0)

我上周也遇到过这个问题。在我的情况下,注释4中生成的png无法通过asus zenphone 2显示。但是小米mi4中的png相同。

我在这种情况下的解决方案是将Bitmap.CompressFormat从PNG更改为WEBP,因为WEBP也能够创建透明图像。

我知道它只是治愈'症状,而不是根本问题,但至少对我来说足够了,希望它对你来说足够了。