2010-04-07 3 views
1

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

+0

Что именно вам нужно? утилита (в этом случае этот вопрос должен быть перенесен в SuperUser) или библиотеку программ для использования в вашем коде? – Gnoupi

+0

Ему нужно быстрое программное обеспечение или фрагмент кода, или способ, которым он может загружать части изображения в память, а не весь образ. Короче говоря, он нуждается в некотором роде, чтобы нарисовать большой образ и сделать это с меньшими накладными расходами. –

ответ

0

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

+0

Можно ли перезаписать изображение детали другим изображением без загрузки целых изображений в память? – ed22

0

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

Вот несколько ссылок, чтобы вы начали:

Process images in Java with JAI

JAI project homepage

+0

Каждый из этих двух (утилита или библиотека программ), которые могут помочь мне работать с очень большим изображением и черепицей, является полезной. Я точно хочу изменить размер и выложить более 140 Мб изображений (карт). изображения находятся в формате gif и jpg – Mohammad

0

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

0

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

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

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

Пример сохранить плитку из large.jpeg размера 800х600 из позиции 0х0 в tile.jpeg:

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

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

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

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