Преобразование изображения BMP в PNG или JPG в Java без загрузки всего изображения в память - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь использовать BitmapRegionDecoder для загрузки частей большого растрового изображения в Android, но застрял, потому что формат файла BMP не поддерживается (только JPG и PNG). Возможно ли «перекодировать» растровое изображение в JPG или PNG (сжатие не имеет большого значения) без загрузки всего изображения в память?

Что-то вроде

FileOutputStream fos = new FileOutputStream(pngFile);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = bmpInputStream.read(buffer)) > 0) {
    // Process bytes to PNG format
    fos.write(buffer, 0, bytesRead);
}

1 Ответ

0 голосов
/ 28 февраля 2020

Удалось сделать это, используя эту библиотеку PNGJ , написанную на чистом Java, которую можно использовать в android, и которая позволяет построчно записывать файлы PNG без загрузки всего изображения в память.

...