繁体   English   中英

Android位图解码问题

[英]Android bitmap decode problem

我使用XML从服务器检索文件时遇到问题。

位图(GIF)是base64编码的,然后作为字符串放置在XML中。 应用程序获取此字符串,将其解码为位图,然后显示它。

它在大多数情况下都可以正常工作,但有时BitmapFactory.decodeByteArray返回null,而没有任何问题的迹象。

我已经通过XML复制了其中一个失败的文件(它是可重复的!)作为资源,并且工作正常。

    bMapArray = Base64Coder.decode(cd.image); // Decode the encoded string
    bMap = BitmapFactory.decodeResource(getResources(), R.drawable.fail);
    Log.e("config", bMap.getConfig().name());
    // shows RGB_565, decodes OK and will display
    bMap = BitmapFactory.decodeByteArray(bMapArray, 0, bMapArray.length);           
    Log.e("config", bMap.getConfig().name());           
    // Null config and displays OK for some files, 
    // Fails decodeByteArray for the file matching the one used as a resource and some others

我花了几天的时间试图解决问题,但没有成功。 有人有个好主意吗? 我很高兴接受这是64位enc / decode进程的问题,但是由于cryptoByteArray没有错误,我不确定。

干杯,

马丁

我有一个可以从各种站点下载位图的应用程序-这些都没有经过base64编码。 在大多数情况下,位图都可以通过decodeByteArray,但是每隔一段时间(例如默认的Facebook个人资料图标),我都会返回null。

我花了很长时间试图弄清楚是怎么回事,最后(您也怀疑)得出结论,这是在解码字节数组中处理GIF的错误。

如果您在此处(以及其他地方)搜索“ android bitmap gif encodebytearray”,则可以找到许多暗示其他人也有相同问题的提示-但我没有找到权威的错误报告。

这里有三个非常明显的问题可能会出错。

1)发送之前将图像添加到XML的方式-检查图像是否正确编码

2)传输过程-确保传输不会被截断,尤其是在缓冲输入流的情况下

3)从接收到的XML中解析数据-再次检查是否已正确解析出字符串。

最可能的候选者是传播。 图片大小是否会影响您看到的结果? 如果仅接收部分数据,它将失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM