CopyPixelsFromBuffer работает. Но декодирование его ByteArray возвращает null

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(byteBuffer);
// bitmap is valid and can be displayed

Я извлек ByteArray из допустимого byteBuffer. Но он возвращает ноль, когда я пытался декодироватьByteArray. Может кто-нибудь объяснить, почему это так.

byteBuffer.rewind();
byteBuffer.get(byteArray, 0, byteBuffer.capacity());
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0 , byteArray.length);
// returns null

person Pierrew    schedule 16.06.2015    source источник


Ответы (1)


Я считаю, что две функции делают разные вещи и ожидают разных данных.

копироватьPixelsFromBuffer()

используется для импорта необработанной информации о пикселях в существующее растровое изображение, у которого уже настроены размер и глубина пикселей.

BitmapFactory.decodeByteArray()

используется для создания растрового изображения из массива байтов, содержащего полные данные файла растрового изображения, а не только необработанные пиксели. Вот почему функция не принимает (и не нуждается) в информации о размере и глубине пикселей, потому что она получает все это из переданных ей байтов.

person adelphus    schedule 16.06.2015