ソケット接続を使用してPCからAndroidに画像を転送しようとしています。私はPCから電話にデータを受け取ることができますが、をBitmapFactory
に渡すとnullが返されます。いつか戻ってくるイメージもありますが、必ずしもそうではありません。Android - BitmapFactory.decodeByteArrayがnullを返す
画像のサイズは40054 bytes
です。私はbyte
データを保持する小さなデータプール(バッファ)を作成するので、一度に2048 bytes
を受信しています。完全なデータを受け取った後、私はそれをBitmapFactory
に渡しています。ここに私のコードは次のとおりです。
byte[] buffer = new byte[40054];
byte[] temp2kBuffer = new byte[2048];
int buffCounter = 0;
for(buffCounter = 0; buffCounter < 19; buffCounter++)
{
inp.read(temp2kBuffer,0,2048); // this is the input stream of socket
for(int j = 0; j < 2048; j++)
{
buffer[(buffCounter*2048)+j] = temp2kBuffer[j];
}
}
byte[] lastPacket=new byte[1142];
inp.read(lastPacket,0,1142);
buffCounter = buffCounter-1;
for(int j = 0; j < 1142; j++)
{
buffer[(buffCounter*2048)+j] = lastPacket[j];
}
bmp=BitmapFactory.decodeByteArray(buffer,0,dataLength); // here bmp is null
計算
[19 data buffers of 2kb each] 19 X 2048 = 38912 bytes
[Last data buffer] 1142 bytes
38912 + 1142 = 40054 bytes [size of image]
私も一度フル40054のバイトを読み込むしようとしたが、これも働いていませんでした。コードは次のとおりです。
inp.read(buffer,0,40054);
bmp=BitmapFactory.decodeByteArray(buffer,0,dataLength); // here bmp is null
最後にdecodeStream
でチェックしましたが、結果は同じでした。
私が間違っているのは何ですか?
おかげ
見てください...私はそれをチェックさせて...ありがとう! –