Jaka jest najlepsza biblioteka/podejście do przetwarzania obrazów java? [zamknięte]

Używam zarówno jai media API i ImageMagick?

ImageMagick ma pewne problemy ze skalowalnością, a jmagick oparty na JNI również nie jest atrakcyjny. JAI ma słabe wyniki jakości podczas wykonywania operacji zmiany rozmiaru w porównaniu do ImageMagick.

Czy ktoś zna jakieś doskonałe narzędzia open source lub komercyjne, które są natywne java i zapewniają wysoką jakość wyników?

Author: Daniel Honig, 2009-03-02

11 answers

Jest ImageJ , która chwali się

Najszybszy na świecie czysty obraz Javy program przetwarzania

Może być używana jako Biblioteka w innej aplikacji. Jego architektura nie jest genialna, ale wykonuje podstawowe zadania przetwarzania obrazu.

 83
Author: Ivan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-05 23:58:09

Wiem, że to pytanie jest dość stare, ale gdy wychodzi nowe oprogramowanie, pomaga uzyskać nowe linki do projektów, które mogą być interesujące dla ludzi.

Imgscalr jest czystą zmianą rozmiaru obrazu w Javie (i prostymi opcjami, takimi jak padding, kadrowanie, obracanie, rozjaśnianie/ściemnianie itp.) biblioteka, która jest boleśnie prosta w użyciu - pojedyncza klasa składa się z zestawu prostych operacji graficznych zdefiniowanych jako statyczne metody, które przekazujesz obraz i odzyskujesz wynik.

Najbardziej podstawowy przykład użycia biblioteki wygląda następująco:

BufferedImage thumbnail = Scalr.resize(image, 150);

I bardziej typowe użycie do generowania miniatur obrazów za pomocą kilku poprawek jakości i tym podobne może wyglądać tak:

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

Wszystkie operacje przetwarzania obrazów używają surowego potoku Java2D (który jest przyspieszany sprzętowo na głównych platformach) i nie wprowadzą bólu wywołania w Twoim kodzie poprzez JNI like library contention.

Imgscalr został również wdrożony w dużych produkcjach w wielu miejsca - włączenie klasy AsyncScalr sprawia, że jest to idealne rozwiązanie dla każdego przetwarzania obrazu po stronie serwera.

Istnieje wiele poprawek do jakości obrazu, które można wykorzystać do wymiany między szybkością a jakością z najwyższym trybem ULTRA_QUALITY, zapewniając skalowany wynik, który wygląda lepiej niż implementacja GIMP ' a Lancoz3.

 126
Author: Riyad Kalla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-15 10:07:16

Kolejna dobra alternatywa:

 29
Author: Joseph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 13:48:27

Nie jestem facetem od Javy, ale OpenCV jest świetny dla moich potrzeb. Nie wiem, czy pasuje do ciebie. Tu jest port Java, chyba: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html

 9
Author: kenny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-28 11:06:51

Przetwarzanie jest nowe, ale bardzo, bardzo dobre.

 8
Author: fmsf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-07 01:49:56

Spróbuj użyć Catalano Framework .

Keypoints:

  • Architektura jak AForge.NET/Accord.NET.
  • Uruchom w obu środowiskach z tym samym kodem, pulpitem i Androidem.
  • zawiera kilka filtrów równolegle.
  • rozwój trwa pełną parą.
[1]}Catalano Framework to framework do obliczeń naukowych dla Javy i Androida. Projekt rozpoczął się jako początkowy port wielu funkcji AForge.NET oraz Accord.NET frameworków dla. NET, ale stale rośnie wraz z bardziej zaawansowanymi funkcjami, które są obecnie współdzielone między tymi projektami.

Przykład:

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
 5
Author: Diego Catalano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-01 14:40:26

Imo najlepszym podejściem jest użycie GraphicsMagick Image Processing System z im4java jako interfejsu comand-line dla Javy.

Istnieje wiele zalet GraphicsMagick, ale jedna dla wszystkich:

  • GM jest używany do przetwarzania miliardów files at the world ' s largest photo witryny (np. Flickr i Etsy).
 4
Author: kajo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 17:07:41

Http://im4java.sourceforge.net/ - Jeśli używasz Linuksa, nowy proces nie jest drogi.

 3
Author: Amanjit Gill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-15 11:23:55

W przypadku narzędzi komercyjnych możesz spróbować Snowbound.

Http://www.snowbound.com/

Moje doświadczenie z nimi jest nieco przestarzałe, ale okazało się, że ich Java Imaging API jest o wiele łatwiejsze w użyciu niż JAI i o wiele szybsze.

Ich Obsługa klienta i próbki kodu były również bardzo dobre.

 2
Author: Clayton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-02 18:04:21

RoboRealm vision Software list wymienia JHLabs i NeatVision wśród wielu innych bibliotek nie opartych na Javie.

 2
Author: rics,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-13 15:54:06

Nie mogę powiedzieć, że jest to" najlepsza " biblioteka, ale myślę, że możesz spróbować tego: http://algart.net/java/AlgART/ Jest to otwarta biblioteka Java, obsługująca uogólnione "inteligentne" tablice i macierze z elementami różnych typów (od 1 bitów do 64 bitów zmiennoprzecinkowych), w tym przetwarzanie obrazów 2D, 3D i wielowymiarowych oraz inne algorytmy, pracujące z tablicami i macierzami. Niestety w tej chwili Zawiera za mało demo i przykładów, ale z drugiej strony zawiera dużo Javadoc. Przez kilka lat leżał w bazie komercyjnego oprogramowania (SIMAGIS), ale teraz jest open-source.

 1
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-26 16:05:06