我正在尝试使用套接字连接将图像从 pc 传输到 android。我能够从电脑接收数据到手机,但是当我通过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
但结果是一样的。
知道我在哪里做错了吗?
谢谢