BitmapFactory декодирует байты PNG в необработанные данные - PullRequest
0 голосов
/ 19 октября 2018

Я загружаю данные изображения по сети и, очевидно, они сжаты.Внутри приложения мне нужно, чтобы данные были на 100% точными по отношению к оригиналу.Так, например, для изображения 720x720 мне нужен массив int длиной 518400 или байтовый массив длиной 2073600, где значения не были изменены по сравнению с оригиналом.Поскольку сжатие PNG без потерь, это должно быть возможно. Я заметил, что BitmapFactory применяет некоторые психовизуальные эффекты при декодировании, которые не заметны при просмотре изображения, однако немного измените значения байтов (я предполагаю, что это для скорости и /или лучше визуальный вид на экране).

В настоящее время я использую BitmapFactory.decode, а затем перебираю каждый пиксель для создания нового массива из аппроксимации и создания нового растрового изображения с помощью Bitmap.create. Это возможно.потому что на данный момент изображения являются двоичными, и в исходных изображениях каждый пиксель равен (r, g, b, 255) или (0, 0, 0, 0).Я могу найти наиболее распространенный цвет и установить все пиксели с альфа-значениями через некоторое пороговое значение для этого значения RGB.Однако решение довольно медленное и кажется излишне сложным.

Так что мой вопрос - есть ли комбинация флагов опций для BitmapFactory.decode, которая возвращает 100% истинное значение для первоначального битмапа, или мне нужно создатьСам PNG декодер для этого?

...