ksoap2 ライブラリを使用して消費している .net ASMX Web サービスがあります。このサービスでは、まずユーザーの画像を保存し、後で取得します。ただし、一度取得すると、バイト配列はそのままですが、BitmapFactory はそれをデコードできず、null を返します。
バイト配列に変換するには:
Bitmap viewBitmap = Bitmap.createBitmap(imageView.getWidth(),
imageView.getHeight(), Bitmap.Config.ARGB_8888);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
viewBitmap.compress(CompressFormat.PNG, 0 /* ignored for PNG */, bos);
byte[] bitmapdata = bos.toByteArray();
Web サービスは、byte[] 形式の bytearray を受け入れます。
配列をビットマップに変換するには:
byte[] blob= info.get(Main.KEY_THUMB_BYTES).getBytes();
Bitmap bmp=BitmapFactory.decodeByteArray(blob,0,blob.length); // Return null :(
imageView.setImageBitmap(bmp);
部分的な分析から、バイト配列は変更されていないように見えます。では、なぜデコードすると null が返されるのでしょうか? 画像を保存して Web サービスに渡す方がよいでしょうか? バイト配列全体を分析したわけではないので、少し変わったのではないかと推測しています。
何かご意見は?どうもありがとう!
更新: 次 を使用して byte[] を文字列に変換しようとしました:
Base64.encodeToString( bos.toByteArray(), Base64.DEFAULT);
そして、次を使用してデコードします。
byte[] blob= Base64.decode(info.get(Main.KEY_THUMB_BYTES));
今私が得るのは白い写真だけです。ここで何が問題なのかわかりません。助けてください。
更新: この画像をデータベース内のvarchar(max)型の列に保存しています。このバイト配列文字列を別の SQL データ型に格納する必要がありますか? 私は SQL の経験があまりないので、テキストを Unicode に変換しなかったため、varchar を使用しました。
ありがとう!