Android:从base64binary格式获取图像

时间:2011-02-03 16:28:29

标签: android image byte base64 decoding

我使用网络服务来获取图片。服务响应包含base64Binary格式的图像。我尝试使用Base64.decode()(http://iharder.sourceforge.net/current/java/base64/)解码响应数据。请参阅下面的代码:

 byte[] data = Base64.decode(responseString);
 Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
 imageView.setImageBitmap(bmp);

decodeByteArray 始终返回null。

我尝试在.png文件中保存数据。我可以在我的PC和Android文件管理器应用程序中打开此文件。但是文件管理器的预览活动无法打开此文件。

然后我尝试使用带有Convert.Base64()方法的.NET客户端解析这些数据。此图像已成功处理。然后我比较用android客户端和.NET客户端创建的图像中的字节数组。差异是字节的符号。 .NET使用无符号字节,但Java仅使用有符号字节。这是我问题的原因吗?

有没有人在解码base64Binary时遇到同样的问题?

1 个答案:

答案 0 :(得分:2)

这是一个解决方案,对我来说是有效的(知道图像来自服务器的格式是通过Web服务的是base64binary)

decodedIcon[] = null;
byte[] bb = (resposeString).getBytes("utf-8");
decodedIcon = Base64.decodeBase64(bb);

Bitmap bitmap = BitmapFactory.decodeByteArray(decodedIcon, 0,
decodedIcon.length);

//then you get the image view and setImageBitmap(bitmap)

PS:

Base64.decodeBase64来自org.apache.commons.codec.binary.Base64库; 你应该在assets文件夹中包含commons-codec-1.3.jar

版本不一定是1.3

感谢我的一位朋友提示。