Java Open Source Imaging Library als Ersatz für die JAI

Ich suche derzeit nach einer Open-Source-Alternative zur Java Advanced Imaging API. Ich brauche ein Plugin für das javax.imageioPaket, und ich brauche die Funktionalitäten, die sonst im JAI enthalten wären. Zumindest muss ich Dateien im .tiffBildformat lesen und schreiben können. Es wäre schön, auch Funktionen in anderen Formaten zu haben, wie z. B. das .svgFormat oder sogar die Formate .psdund ..icns

Ich bin nicht begeistert von JAI, da es sich um eine proprietäre Arbeit handelt, und ich versuche, meine Anwendung Open Source zu machen. Es wird auch nicht aktualisiert und es sind viele Fehler damit verbunden.

Es muss auch eine freizügige Lizenz enthalten oder eine Lizenz, die keine Copyleft-Klausel enthält, wodurch so etwas wie die GPL ausgegeben wird. Idealerweise sollte es entweder die Apache- oder die MIT-Lizenz besitzen.

Sie sollten Ihre Frage bearbeiten und Ihre Anforderungsliste in eine nach Wichtigkeit geordnete Liste mit Nummern oder Aufzählungszeichen umwandeln. Sie sollten auch sagen, warum Sie die JAI nicht verwenden möchten.
@unforgettableid Das ist hier wirklich nicht relevant ... Wenn ich nach einem Open-Source-Programm suche, sollte es ziemlich klar sein, dass ich das JAI sowieso nicht will ...

Antworten (2)

Offenlegung: Ich bin der Hauptautor / Betreuer der vorgeschlagenen Bibliothek, aber es scheint eine sehr gute Übereinstimmung mit dem zu sein, was die Frage stellt.


TwelveMonkeys ImageIO

Dieses Projekt enthält eine große Sammlung von Plugins und Erweiterungen für Javas ImageIO (das javax.imageioPaket) und ist vollständig in Java geschrieben (keine nativen Builds oder Installationen erforderlich).

Diese Plugins erweitern die Anzahl der in Java unterstützten Bilddateiformate unter Verwendung des Pakets javax.imageio.*. Der Hauptzweck dieses Projekts besteht darin, Unterstützung für Formate bereitzustellen, die nicht von der JRE selbst abgedeckt werden.

  • Insbesondere hat es ein TIFF-Plugin mit Lese- und Schreibunterstützung. Eines der Ziele für das TIFF-Plugin ist es, ein direkter Ersatz für das JAI TIFF-Plugin zu sein. Dies bedeutet, dass es die meisten der gleichen Lese- und Schreibparameter unterstützt und das gleiche native Metadatenformat verwendet. Das soll die Migration von JAI besonders einfach machen. Es unterstützt auch verschiedene TIFF-Varianten, die die JAI-Version nicht unterstützt.

  • Das Projekt bietet Leseunterstützung für ICNS- und PSD-Formate und bietet mithilfe der Drittanbieterbibliothek Batik sogar Unterstützung für das SVG-Format über die javax.imageioAPI. Das Projekt bietet außerdem zusätzliche Leseunterstützung für mehrere andere Formate wie PNM, PICT, SGI, TGA und WebP.

  • Schließlich wird das Projekt unter einer sehr freundlichen Open-Source-Lizenz im BSD-Stil vertrieben, wodurch es sowohl in Open-Source- als auch in kommerziellen Produkten verwendet werden kann.

Als ich versuchte, nach guten Bildbibliotheken zu suchen, fand ich einige ziemlich alte Threads und stieß auf einige Konkurrenten, die weiterzuleben scheinen und unterschiedliche Stärken haben:

OpenImaj

OpenIMAJ ist ein preisgekröntes Set von Bibliotheken und Werkzeugen für die Multimedia-Inhaltsanalyse und Inhaltsgenerierung. OpenIMAJ ist sehr breit gefächert und enthält alles von hochmoderner Computervision (z. B. SIFT-Deskriptoren, Erkennung hervorstechender Regionen, Gesichtserkennung usw.) und fortschrittlichem Daten-Clustering bis hin zu Software, die Inhalts-, Layout- und Strukturanalysen durchführt von Webseiten.

... Die Bibliothek ist als modularer Satz von Jars verfügbar und der Quellcode ist unter einer Lizenz im BSD-Stil frei verfügbar. Wenn Sie OpenIMAJ für akademische Arbeiten verwenden, würden wir uns über einen Verweis auf uns freuen. Für einen schnellen Einstieg in OpenIMAJ empfehlen wir Ihnen, das Tutorial auszuprobieren. Weitere Informationen zur Installation des Quellcodes, zur Integration der JAR-Dateien in Ihr Java-Projekt oder zur Verwendung der Befehlszeilentools finden Sie im Dokumentationsmenü oben. Der Blog zeigt einige coole Beispiele für Dinge, die wir mit OpenIMAJ und ImageTerrier gemacht haben.

Vorteile, es hat eine auch kommerziell nutzbare Lizenz und ist direkt in Java geschrieben. Es scheint jedoch, dass die Dokumentation etwas chaotisch ist, und ich konnte nicht wirklich herausfinden, welche Bildformate sie unterstützt oder nicht. Aber vielleicht haben Sie mehr Glück, Ihre beabsichtigten Funktionen und Anforderungen zu finden

JavaXT.io.Image

Über den Bildteil der Bibliothek:

Die javaxt.io.Image-Klasse wurde entwickelt, um das Lesen, Schreiben und Bearbeiten von Bilddateien zu vereinfachen. Hier sind ein paar einfache Beispiele zum Öffnen, Drehen, Zuschneiden, Ändern der Größe und Speichern von Bilddateien. Eine vollständige Liste der Methoden finden Sie in den JavaDocs .

Zum Lizenzproblem:

JavaXT ist ein Open-Source-Projekt, das unter einer MIT-Lizenz veröffentlicht wurde. Sie können den Code und die Informationen, die Sie hier finden, nach Belieben verwenden. Diese Software wird ohne Garantien oder Gewährleistungen geliefert. Sie dürfen diese Software in jedem Open-Source- oder kommerziellen Projekt verwenden.

Dies ist vielleicht die vielversprechendste Bibliothek, aber sie verarbeitet viel mehr als nur Bildmaterial. Ich bin mir nicht sicher, ob Sie einfach den Image-Teil davon installieren können oder nicht.

Freies Bild

Zur Bibliothek selbst:

FreeImage ist ein Open-Source-Bibliotheksprojekt für Entwickler, die gängige Grafikbildformate wie PNG, BMP, JPEG, TIFF und andere unterstützen möchten, wie sie von heutigen Multimedia-Anwendungen benötigt werden. FreeImage ist einfach zu bedienen, schnell, Multithreading-sicher, kompatibel mit allen 32-Bit- oder 64-Bit-Versionen von Windows und plattformübergreifend (funktioniert sowohl mit Linux als auch mit Mac OS X).

Dank seiner ANSI-C-Schnittstelle ist FreeImage in vielen Sprachen einsetzbar, darunter C, C++, VB, C#, Delphi, Java und auch in gängigen Skriptsprachen wie Perl, Python, PHP, TCL oder Ruby.

Dies ist keine reine Java-Bibliothek, und Sie müssen eine Schnittstelle herstellen. Es bietet jedoch viele der Funktionen und Dateiformate, nach denen Sie suchen. Eine möglicherweise veraltete Teilschnittstelle kann in freeimage4j gefunden werden . Wenn es nicht aktualisiert wird, sollte/könnte es eine Basis für Ihre neue Schnittstelle bieten.


Aus der Bildperspektive scheint FreeImage die beste Wahl zu sein, aber Sie könnten Schwierigkeiten haben, es zu integrieren. OpenIMAJ könnte das haben, was Sie brauchen, aber ich konnte mich nicht in der Dokumentation zurechtfinden. JavaXT.io.Image scheint es zu haben, aber Sie könnten auch viel anderes haben.

Sie sind sich nicht sicher, aber wäre es nicht besser, eine Antwort pro Empfehlung zu haben, damit die beste an die Spitze kommt?
@CristianCiupitu, ich würde diese normalerweise tatsächlich als separate Antworten posten, aber sie sind eng miteinander verbunden, während sie sich auf verschiedene Aspekte der Anfrage konzentrieren.
Diese sehen toll aus! Sie geben dir definitiv viel!
Ich danke dir sehr! Ich habe etwas anderes gefunden, das ich als Antwort posten werde, aber diese waren definitiv hilfreich, und ich werde es wahrscheinlich in späteren Versionen für meine App verwenden. :D
In Bezug auf OpenIMAJ habe ich die API-Dokumente hier gefunden ... scheint, dass sie hier eine neue Website mit all diesen Informationen haben