Java JAI - создание 1 БОЛЬШОГО изображения JPG из множества меньших

Прежде чем вы все скажете "это уже где-то здесь...":-) ПОЖАЛУЙСТА, позвольте мне сказать, что я посмотрел и не нашел простой пример использования JAI для разбиения нескольких jpg и сохранения на диск без ошибок кучи Java или других проблем с памятью. Нигде не могу найти полный рабочий набор кода - все они кажутся неправильно написанными / непроверенными или просто не работают....

Помоги мне Some-BiWan Kenobi - ты моя единственная надежда!

1 ответ

Насколько большие изображения? Возможно, вы сможете просто увеличить объем памяти, выделенной для JVM. Если они огромные, то JPG может быть неправильным форматом, потому что вам нужно загрузить все изображение в память, чтобы сжать и записать его. Возможно, вам повезет больше, если вы написали плиточный TIFF с использованием JAI.

Я задал похожий вопрос здесь: записать компонент свинга в большое изображение TIFF, используя JAI

Рабочим решением является BigBufferedImage. Он может загружать и хранить гораздо большие изображения, чем предел памяти. Хитрость заключается в том, что его буфер заменяется файловой реализацией DataBuffer. Он хранит изображение на жестком диске. ОЗУ не используется. Это может предотвратить OutOfMemoryException.

Создайте изображение BigBufferedImage из файла изображения:

BigBufferedImage image = BigBufferedImage.create(
        inputFile, tempDir, TYPE_INT_RGB);

Создайте пустой BigBufferedImage:

BigBufferedImage image = BigBufferedImage.create(
        tempDir, width, height, TYPE_INT_RGB);

Для получения дополнительной информации об обработке больших изображений прочитайте эту статью.

Другие вопросы по тегам