Какова лучшая библиотека/подход обработки изображений Java?[закрыто]

StackOverflow https://stackoverflow.com/questions/603283

Вопрос

Я использую API JAI Media и ImageMagick?

У ImageMagick есть некоторые проблемы с масштабируемостью, и JMagick на основе JNI также не привлекателен.JAI дает результаты низкого качества при выполнении операций изменения размера по сравнению с ImageMagick.

Кто-нибудь знает какие-нибудь отличные инструменты с открытым исходным кодом или коммерческие, которые являются встроенной Java и обеспечивают высококачественные результаты?

Это было полезно?

Решение

Есть ИзображениеJ, который может похвастаться тем, что является

Самая быстрая в мире программа обработки изображений в мире

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

Другие советы

Я знаю, что этот вопрос довольно старый, но по мере появления нового программного обеспечения он помогает получить новые ссылки на проекты, которые могут быть интересны людям.

imgscalr - это библиотека изменения размера изображения на чистом Java (и простые операции, такие как заполнение, обрезка, вращение, увеличение/затемнение и т. д.), которая до боли проста в использовании - один класс состоит из набора простых графических операций, все определенные как статический методы, с помощью которых вы передаете изображение и возвращаете результат.

Самый простой пример использования библиотеки будет выглядеть так:

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);
}

Все операции обработки изображений используют необработанный конвейер 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

Имхо, лучший подход - использовать Система обработки изображений GraphicsMagick с im4java как интерфейс командной строки для Java.

Преимуществ у GraphicsMagick много, но одно на всех:

  • GM используется для обработки миллиардов файлов на крупнейших в мире фото -сайтах (например,Flickr и Etsy).

http://im4java.sourceforge.net/ - если вы используете Linux, создание нового процесса не потребует больших затрат.

Из коммерческих инструментов вы можете попробовать Snowbound.

http://www.snowbound.com/

Мой опыт работы с ними несколько устарел, но я обнаружил, что их Java Imaging API намного проще в использовании, чем JAI, и намного быстрее.

Их поддержка клиентов и примеры кода тоже были очень хорошими.

Программное обеспечение машинного зрения RoboRealm список упоминает JHLabs и NeatVision среди множества других библиотек, не основанных на Java.

Я не могу сказать, что это "лучшая" библиотека, но думаю, что вы можете попробовать вот это:http://algart.net/java/AlgART/Это Java-библиотека с открытым исходным кодом, поддерживающая обобщенные «умные» массивы и матрицы с элементами разных типов (от 1 до 64 бит с плавающей запятой), включая обработку 2D-, 3D- и многомерных изображений и другие алгоритмы, работающие с массивы и матрицы.К сожалению, на данный момент в нем недостаточно демо и примеров, но, с другой стороны, он содержит много JavaDocs.Несколько лет он лежал в основе коммерческого программного обеспечения (SIMAGIS), но сейчас имеет открытый исходный код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top