2011-02-03 24 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ファイルに保存しようとしています。自分のPCとAndroid File Managerアプリケーションでこのファイルを開くことができます。しかし、ファイルマネージャのプレビューアクティビティでこのファイルを開くことはできませんでした。

次に、このデータを.NETクライアントを使用してConvert.Base64()メソッドで解析しようとします。そして、この画像はうまく処理されています。次に、アンドロイドクライアントと.NETクライアントで作成されたイメージのバイト配列を比較します。違いはバイトの符号であった。 .NETでは符号なしバイトが使用されますが、Javaでは符号付きバイトのみが使用されます。これは私の問題の理由ですか?

誰もbase64Binaryのデコードで同じ問題がありますか?ここで

+0

'responseString'、したがって' data'はnullではありませんか? – user432209

+0

もちろん、私は確信しています。 dataとresponseStringはnullではありません。 – Ramoz

答えて

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

おかげである必要はありません資産フォルダ

に含まれている必要があります。