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);
Для получения дополнительной информации об обработке больших изображений прочитайте эту статью.