[英]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.