2011-02-03 45 views
1

我使用web服務來獲取圖像。服務響應包含base64Binary格式的圖像。我嘗試使用Base64.decode()(http://iharder.sourceforge.net/current/java/base64/)解碼響應數據。見下面我的代碼:Android:從base64binary格式獲取圖像

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

decodeByteArray總是返回null。

我嘗試在.png文件中保存數據。我可以在我的電腦和Android文件管理器應用程序中打開這個文件。但是文件管理器的預覽活動無法打開這個文件。

然後,我嘗試使用.NET客戶端與Convert.Base64()方法解析此數據。這張圖片已經成功處理。然後我比較用Android客戶端和.NET客戶端創建的圖像中的字節數組。差異是以字節爲單位的。 .NET使用無符號字節,但Java僅使用帶符號字節。這是我的問題的原因嗎?

是否有人在解碼base64Binary時遇到同樣的問題?

+0

你確定`responseString`和'data`不爲null嗎? – user432209 2011-02-03 16:55:03

回答

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; 你應該列入資產文件夾

公地編解碼器1.3.jar版本不必須是1.3

感謝我的朋友爲這個線索之一。