2013-09-28 2 views
2

Я пытаюсь преобразовать очень большой BMP-файл в png.Как я могу преобразовать большой BMP в png?

Я пишу приложение, чтобы сделать фрактальное изображение, и я хочу сделать изображение с очень высоким разрешением (например, ultrahd).

Я сохраню изображение растрового изображения прямо в файл с RandomAccessFile, поэтому я не буду выделять в память какой-либо объект Bitmap. Проблема заключается в том, чтобы преобразовать bitany-файл timeany в png.

Я нашел BitmapRegionDecoder, но это не полезно для моей проблемы.

Непростая конвертация изображения без полной загрузки данных. :(

Я думаю, что это хорошее решение может быть способ выглядеть следующим образом:. ConvertToPng (InputStream BitmapData, OutputStream pngStream)

Мой вопрос, как я могу преобразовать очень большой растровое изображение в формате PNG без иметь OutOfMemoryException

+0

Aaand вопрос является ... –

+0

вам повезло, потому Структура данных BMP не сжимается, и каждый пиксель имеет свои собственные данные int, так как вы упомянули, сначала откройте поток, вам нужно пропустить данные заголовка (я не знаю, что такое iso! поиск структуры). вам необходимо прочитать данные о пикселях в виде буфера, read-> process-> save и, наконец, собрать все их вместе. ты что-то пробовал ?! btw, хороший вопрос +1 –

+0

Да, легко читать и писать растровое изображение, я не знаю, как его закодировать в png, используя буфер или поток байтов :( –

ответ

0

вы можете попробовать PNGJ библиотеку? (отказ от ответственности: я автор).?, который позволяет читать/писать PNG изображения построчно

+0

библиотека потрясающая. Я создаю это приложение с вашей библиотекой. Я могу сделать фрактальное изображение 4K без проблем! Спасибо! https://play.google.com/store/apps/details ? id = it.cronosoft.thefract –

+0

Добро пожаловать. Чтобы быть включенным в https://code.google.com/p/pngj/wiki/Users, вы можете оставить там комментарий. – leonbloy

Смежные вопросы