У меня есть большой компонент Swing для записи в TIFF. Компонент слишком велик для загрузки TIFF в память, поэтому мне либо нужно создать большой BufferedImage, который поддерживается дисковым WritableRaster (как упоминалось здесь) или использовать JAI.
JAI кажется лучшим ответом, если не считать полной путаницы проекта.
Учитывая это, может ли кто-нибудь наметить шаги для записи моего компонента Swing в мозаичный TIFF без нехватки памяти?
Размер изображения будет возможно 10000x700
В идеале я бы создал какой-то образ на диске и записал бы в него части компонента, при этом каждая запись сбрасывалась бы на диск.
ИЗМЕНИТЬ
Я думаю, что мог бы сделать это с помощью ImageWriter, однако я получаю исключение NoSuchElementException, когда я звоню:
ImageWriter imageWriter = ImageIO.getImageWritersByFormatName("tif").next();
У меня есть jar-файлы jai_code.jar и jai_core.jar в моем пути к классам, есть ли что-то еще, что мне нужно сделать?
РЕДАКТИРОВАНИЕ Я могу создать очень большой файл TIFF с помощью JAI, но JAI не поддерживает сжатие TIFF, поэтому размер файла составляет 92 МБ.
Если я установлю JAI-ImageIO, я смогу создать сжатый TIFF с помощью ImageWriter, но только из растра или BufferedImage, для которого у меня недостаточно памяти.
Есть ли способ сделать двухэтапный подход, использовать JAI для создания большого TIFF, а затем сжать большой TIFF, не загружая все это в память?