очень большие манипуляции с изображениями и укладка плитки - PullRequest
1 голос
/ 07 апреля 2010

Мне нужно программное обеспечение или программа на Java или метод мозаичного изображения очень больших изображений (размером более 140 МБ).Я использовал ImageMagick и конвертировал инструменты Photoshop и Corel Draw и Matlab (в Windows), но у меня проблема с перегрузкой памяти.ImageMagick очень медленный и результат не желателен.Я не знаю, как я могу загрузить только небольшую часть изображения в память, не загружая все изображение с жесткого диска.

Ответы [ 4 ]

0 голосов
/ 06 января 2012

JAI зависит от платформы и сегодня кажется мертвым проектом.

Я советую использовать программу с открытым исходным кодом imagemagick . Хотя он зависит от платформы, он доступен для тех же платформ, что и JAI, но с полной поддержкой сообщества.

Уловка больших изображений в imagemagick заключается в использовании команды stream вместо команды convert . Stream только читает соответствующую часть изображения и сохраняет извлеченную часть как необработанные данные. Затем вам нужно "преобразовать", чтобы сохранить небольшие необработанные данные в формате JPEG.

Пример сохранения тайла из large.jpeg размером 800x600 из позиции 0x0 в tile.jpeg:

    stream -extract 800x600+0+0 large.jpeg tile.rgb

    convert -depth 8 -size 800x600 rgb:tile.rgb tile.jpeg

(При работе в Windows обязательно используйте ImageMagick's convert.exe, поскольку есть команда windows с именем «convert».)

При работе только с TIFF-изображениями, Apache Sanselan может быть правильным выбором - это библиотека изображений с чисто Java. Кроме того, JAI, похоже, содержит независимый от платформы кодек для TIFF.

0 голосов
/ 07 апреля 2010

Вы должны взглянуть на API Java Advanced Imaging (JAI), который предоставляет готовую поддержку для мозаичного изображения больших изображений.Это довольно сложный API, и документация его немногочисленна, но мы использовали его в проекте для просмотра очень высоких (но узких) изображений размером около 60 Мбайт.

Вот несколько ссылок наНачало работы:

Обработка изображений на Java с помощью JAI

Домашняя страница проекта JAI

0 голосов
/ 08 апреля 2010

Это не Java, но Inter Performance Primitives (IPP) имеют набор функций для работы с изображениями, которые работают с плитками. Вы, вероятно, можете связать эти функции с Java.

0 голосов
/ 07 апреля 2010

Если вы используете нативный код, библиотеки, такие как libjeg, предоставляют вам доступ к изображениям с помощью линии сканирования - вам может потребоваться загрузить не более 16 строк одновременно.

...