これは私を少し怒らせている!私はバイトの最初の数バイトを見てみると、Android Bitmap.Compressは-1バイトでbyte []を返しますか?
InputStream is = MyActivity.this.getContentResolver().openInputStream(imageUri);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2; //try to decrease decoded image
options.inPurgeable = true; //purgeable to disk
Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 20, bos);
myModel.setFullImage(bos.toByteArray());
しかし
私は、画像を撮影してきたし、(以下のように)バイト配列に画像を取得するためにBitmap.Compressメソッドを使用しますそれは
多数-1と同様に有効な数字(0〜255)および-98などのような負の数が含まれています[] Iは、(JSON形式で)、ワイヤ全体でこのデータを送信することだし、それはそれを変換に失敗しました配列内の負の数のためにac#byte []に変換します。
何がうまくいかないのか、何か逃したのですか?私は圧縮が何かをしていた場合に圧縮fatorを0に設定しようとしました。
奇妙なことは、私はBASE64にバイトを変換するならば、私は、成功した画像を保存すると、C#で[]バイトにbase64文字列を変換することができることに送信されます。
What's going wrong?事前に
おかげ
ジョン
おかげでマルクは、私がこれをやってみるよしかし、私は単なるバイト配列を送信したかった理由のサイズではなく、それを減少さを増加させた印象をbase64の下にありました。 – Jon
@Jon:BASE64 *はサイズを増やします(生のバイトに比べて)、JSONはサイズをさらに大きくするので、BASE64はJSONよりも小さいエンコードでなければなりません。 – Gabe
Gabeのように@Jonは - 生のバイトを送信していません[] - あなたはテキストを送信しています。テキストとしての整数は基底64よりもずっと大きい* –