Я пытаюсь получить 16-битное цветное изображение с разрешением 80 x 60 со встроенной камеры (техническое описание здесь). Я успешно могу получить 9600 (80*60*16/8) байт с камеры, но у меня проблема с отображением изображения. Я использую следующий код для преобразования массива байтов в растровое изображение:
bm = Bitmap.createBitmap(80, 60, Bitmap.Config.RGB_565);
bm.copyPixelsFromBuffer(ByteBuffer.wrap(jpegBytes));
jpegBytes — это массив байтов изображения длиной 9600 байт.
Прямо сейчас я получаю изображения, которые выглядят так:
99% времени. Однако я могу получить неповрежденные изображения, которые выглядят так:
очень редко. Есть ли у кого-нибудь предложения, почему это происходит? Огромное спасибо!
ОБНОВИТЬ:
Кажется, что все пиксели находятся в правильном месте, но их значения RGB перепутаны. Например, белая часть между обеими фотографиями одинакова, потому что порядок RGB не имеет значения для получения белого цвета. Однако ясно, что цвета перепутаны, потому что красный стул отображается синим на искаженном изображении, а синий рюкзак отображается зеленым на поврежденном изображении.
bm.copyPixelsFromBuffer(ByteBuffer.wrap(jpegBytes).order(ByteOrder.LITTLE_ENDIAN));
? - person Ted Hopp   schedule 24.07.2013