1

画像を取得するためにWebサービスを使用しています。サービスの応答には、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 File Manager アプリケーションで開くことができます。しかし、ファイル マネージャーのプレビュー アクティビティでは、このファイルを開くことができませんでした。

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

base64Binary のデコードで同じ問題を抱えている人はいますか?

4

1 に答える 1

2

これが1つの解決策であり、私にとっては機能しています(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 である必要はありません

このヒントをくれた友人に感謝します。

于 2011-02-17T11:26:59.200 に答える