私はこのアプリを持っており、バイト配列の形式で画像を受信する必要があります。そのイメージは、以前は次のようにサーバーに送信されています。
image = image.createScaledBitmap((Bitmap) extras.get("data"), 380, 400, true);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
imagen.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
画像はサーバーに正常に送信されます。アプリケーションの別の部分がサーバーを呼び出して、画像が含まれているJSONを取得します。string.getBytes()
それを文字列に格納してから、次のようなバイト配列を取得するために使用します。
byte[] array=stringimage.getbytes();
配列は次のようなものです:119,80,78,71,13,10 .. ..
「OK、今はBitmapFactory、decodeByteArrayを使用して、ビットマップを取得する」と思いますが、nullを返します。私はグーグルを始めて、ここスタックオーバーフローを見て、問題へのさまざまなアプローチを目にします。その1つ:
image = Bitmap.createBitmap(380, 400, Bitmap.Config.RGB_565);
int row = 0, col = 0;
for (int i = 0; i < array.length; i += 3) {
image.setPixel(col++, row, array[i + 2] & array[i + 1] & array[i]);
if (col == 380) {
col = 0;
row++;
}
}
これは、画像をデコードしてピクセルを手動で設定するようなものです。
動作しません。
もう1つ:
byte[] array=Base64.decode(fotostring.getBytes(),Base64.DEFAULT);
動かない
私の質問は、サーバー側を担当している仲間にアレイを送ってもらうにはどうすればよいですか?どの形式で?彼は私が以前に彼に送った画像にはまったく触れていません。彼はする必要がありますか?
または、バイト配列をどのように管理する必要がありますか?decodeByteArrayが理解できる別の形式に「変換」する必要はありませんか?