ソケット接続を使用して PC から Android に画像を転送しようとしています。PC から電話にデータを受信できますが、byte[]
toに渡すBitmapFactory
と null が返されます。また、画像を返すこともありますが、常にではありません。
画像のサイズは です40054 bytes
。一度に受信2048 bytes
しているので、データを保持する小さなデータ プール (バッファ) を作成しbyte
ます。完全なデータを受け取った後、 に渡します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
たが、結果は同じでした。
私が間違っているところはありますか?
ありがとう