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