Я пытаюсь передать изображение с ПК на Android с помощью сокета. Я могу получать данные с компьютера на телефон, но когда я передаю byte[]
в BitmapFactory
, он возвращает ноль. Также иногда возвращается изображение, но не всегда.
Размер изображения 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
, но результат был тем же.
Есть идеи, где я делаю неправильно?
Спасибо