Какая лучшая библиотека обработки изображений java?
Я использую как JAI media apis, так и ImageMagick?
ImageMagick имеет некоторые проблемы с масштабируемостью, и JMag на JNI тоже не привлекателен.
JAI имеет низкие результаты качества при выполнении операций изменения размера по сравнению с ImageMagick.
Кто-нибудь знает о каких-либо превосходных инструментах с открытым исходным кодом или рекламой, которые являются родной Java и обеспечивают высокое качество результатов?
Ответы
Ответ 1
Здесь ImageJ, который может похвастаться
самый быстрый в мире чистый образ Java программа обработки
Он может использоваться как библиотека в другом приложении. Эта архитектура не блестящая, но она выполняет основные задачи обработки изображений.
Ответ 2
Я знаю, что этот вопрос довольно старый, но по мере появления нового программного обеспечения он помогает получить некоторые новые ссылки на проекты, которые могут быть интересны для людей.
imgscalr - это изменение размера изображения в чистом виде (и простые ops, такие как заполнение, обрезка, поворот, яркость/затемнение и т.д.), библиотека больно простой - один класс состоит из набора простых графических операций, которые все определены как статические методы, которые вы передаете с изображением и возвращаете результат.
Самый простой пример использования библиотеки будет выглядеть так:
BufferedImage thumbnail = Scalr.resize(image, 150);
И более типичное использование для создания эскизов изображений с использованием нескольких настроек качества и т.д. может выглядеть следующим образом:
import static org.imgscalr.Scalr.*;
public static BufferedImage createThumbnail(BufferedImage img) {
// Create quickly, then smooth and brighten it.
img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);
// Let add a little border before we return result.
return pad(img, 4);
}
Все операции обработки изображений используют необработанный конвейер Java2D (который аппаратно ускоряется на основных платформах) и не будут вносить боль в вызове через JNI, например, в конфликте библиотеки в вашем коде.
imgscalr также был развернут в крупномасштабных постановках в довольно много мест - включение класса AsyncScalr делает его идеальным приложением для любой обработки изображений на стороне сервера.
Существует множество настроек качества изображения, которые вы можете использовать для обмена между скоростью и качеством с самым высоким режимом ULTRA_QUALITY, обеспечивающим масштабированный результат, который выглядит лучше, чем реализация GIMP Lancoz3.
Ответ 3
Другая хорошая альтернатива: Marvin
Ответ 4
Я не парень Java, но OpenCV отлично подходит для моих нужд. Не уверен, что он подходит вам. Здесь ядро Java, я думаю:
http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html
Ответ 5
Processing является новым, но очень, очень хорошим.
Ответ 6
Попробуйте использовать Catalano Framework.
Ключевые точки:
- Архитектура, например, AForge.NET/Accord.NET.
- Запустите в обеих средах с тем же кодом, на рабочем столе и Android.
- Содержит несколько фильтров параллельно.
- Разработка идет полным ходом.
Catalano Framework - это основа для научных вычислений для Java и Android. Проект начался как начальный порт многих функций фреймворков AForge.NET и Accord.NET для .NET, но неуклонно растет с более продвинутыми функциями, которые теперь разделяются между этими проектами.
Пример:
FastBitmap fb = new FastBitmap(bitmap);
Grayscale g = new Grayscale();
g.applyInPlace(fb);
Threshold t = new Threshold(120);
t.applyInPlace(fb);
bitmap = fb.toBitmap();
//Show the result
Ответ 7
imo лучший подход заключается в использовании GraphicsMagick Image Processing System с im4java в качестве интерфейса командной строки для Java.
Существует много преимуществ GraphicsMagick, но один для всех:
- GM используется для обработки миллиардов
файлов на крупнейшей в мире фотографии
сайтов (например, Flickr и Etsy).
Ответ 8
http://im4java.sourceforge.net/ - если вы используете linux для нового процесса, это не дорого.
Ответ 9
Для коммерческих инструментов вы можете попробовать Snowbound.
http://www.snowbound.com/
Мой опыт с ними несколько устарел, но я нашел, что их API визуализации Java намного проще в использовании, чем JAI и намного быстрее.
Поддержка клиентов и образцы кода были очень хорошими.
Ответ 10
Программное обеспечение Vision RoboRealm list упоминает JHLabs и NeatVision среди множества других не-Java-библиотек.
Ответ 11
Я не могу сказать, что это "лучшая" библиотека, но я думаю, вы можете попробовать это:
http://algart.net/java/AlgART/
Это библиотека Java с открытым исходным кодом, поддерживающая обобщенные "интеллектуальные" массивы и матрицы с элементами разных типов (от 1 до 64 бит), включая 2D-, 3D- и многомерную обработку изображений и другие алгоритмы, работающие с массивов и матриц.
К сожалению, сейчас он не содержит демо и примеров, но, с другой стороны, он содержит много JavaDocs. Он лежал в основе коммерческого программного обеспечения (SIMAGIS) в течение нескольких лет, но теперь он с открытым исходным кодом.