Какова Лучшая библиотека/подход обработки изображений java? [закрытый]
Я использую как Jai media apis, так и ImageMagick?
ImageMagick имеет некоторые проблемы масштабируемости, и JNI на основе JMagick также не привлекателен. JAI имеет низкое качество результатов при выполнении операций изменения размера по сравнению с ImageMagick.
кто-нибудь знает о каких-либо отличных инструментах с открытым исходным кодом или коммерческих, которые являются родными java и обеспечивают высококачественные результаты?
11 ответов
здесь программе imagej, которая расположена
чистого изображения Java программа обработки
его можно использовать как библиотеку в другом приложении. Это архитектура не блестящая, но она выполняет основные задачи обработки изображений.
Я знаю, что этот вопрос довольно старый, но по мере выхода нового программного обеспечения он помогает получить новые ссылки на проекты, которые могут быть интересны людям.
imgscalr является pure-Java Image resizing (и простые ops, такие как заполнение, обрезка, вращение, осветление/затемнение и т. д.) библиотека, которая до боли проста в использовании-один класс состоит из набора простых графических операций, определяемых как static методы, которые вы передаете изображение и вернуться результат.
самый простой пример использования библиотеки будет выглядеть так:
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's add a little border before we return result.
return pad(img, 4);
}
все операции обработки изображений используют конвейер raw Java2D (который аппаратно ускоряется на основных платформах) и не будет вводить боль вызова через JNI, как библиотечный конфликт в вашем коде.
imgscalr также был развернут в крупномасштабных производствах в нескольких местах-включение класса AsyncScalr делает его идеальным местом для любой обработки изображений на стороне сервера.
существует множество настроек качества изображения, которые вы можете использовать для обмена между скоростью и качеством с самым высоким режимом ULTRA_QUALITY, обеспечивающим масштабированный результат, который выглядит лучше, чем реализация Lancoz3 GIMP.
Я не Java парень, но OpenCV отлично подходит для моих нужд. Не уверен, подходит ли она тебе. Вот порт Java, я думаю: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html
попробуйте использовать Основы Каталано.
расположение:
- архитектура как 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
imo лучший подход использует Система Обработки Изображений GraphicsMagick С im4java как интерфейс comand-line для Java.
есть много преимуществ GraphicsMagick, но один для всех:
- GM используется для обработки миллиардов файлы на самой большой фотографии в мире сайты (например, Flickr и Etsy).
http://im4java.sourceforge.net/ - Если вы используете Linux, разветвление нового процесса не дорого.
для коммерческих инструментов вы можете попробовать Snowbound.
мой опыт работы с ними несколько устарел, но я обнаружил, что их API Java Imaging намного проще в использовании, чем JAI, и намного быстрее.
их образцы поддержки клиентов и кода были очень хорошими.
программное обеспечение RoboRealm vision список упоминает JHLabs и NeatVision среди множества других библиотек, не основанных на Java.
Я не могу сказать, что это "лучшая библиотека", но я думаю, что вы можете попробовать это: http://algart.net/java/AlgART/ Это библиотека Java с открытым исходным кодом, поддерживающая обобщенные" умные " массивы и матрицы с элементами различных типов (от 1 бит до 64 бит с плавающей запятой), включая 2D -, 3D-и многомерную обработку изображений и другие алгоритмы, работающие с массивами и матрицами. К сожалению, сейчас в нем недостаточно демо и примеров, но, с другой стороны, он содержится много документации. Он лежал в основе коммерческого программного обеспечения (SIMAGIS) в течение нескольких лет, но теперь он с открытым исходным кодом.