Mit Image Magick mag schon manch einer gearbeitet haben, ohne es zu wissen. Viele Tools verwenden in bester Unix-Manier unter der Haube die Sammlung der Image-Magick-Programme zur Bildbearbeitung. Seine Stärken spielt das Toolkit besonders dann aus, wenn es um die Massenverabeitung oder komplexe Automation von Bildbearbeitungsvorgängen geht.
In C geschrieben bietet es eine Reihe einfach zu bedienender Kommandozeilenprogramme an, zum Beispiel »mogrify« und »convert« für die Umwandlung zwischen Grafikformaten beziehungsweise das Skalieren von Bildern oder »display« für die Anzeige. Mit »man ImageMagick« erhält man eine Übersicht über alle Programme und darüber, was sie können. Die Kommandozeilenprogramme sind Frontends für das eigentliche Image-Magick-API[2]. Für das C-API gibt es zudem verschiedene Wrapper, unter anderem auch für Perl und eben Java.
Dreischritt mit Hindernissen
Der Quellcode des Java-API, JMagick genannt, steht auf der Website des Autors der Software[3] oder auf[4] bereit. Abhängig von der installierten Version von Image Magick wählt man sich die geeignete Version aus. Für diesen Coffee-Shop ist es die JMagick-Version 5.5.1 im Zusammenspiel mit Image Magick 5.5.4. Für Java-Pakete eher unüblich ist das Build-System mit »autoconf« erstellt. Der übliche Dreischritt »configure;make all;su -c "make install"« erzeugt aber zunächst mal eine Menge Fehlermeldungen.
Zuerst mahnt das Configure-Skript zu Recht die fehlenden Image-Magick- Headerdateien an - hier muss also zusätzlich das Image-Magick-Devel-Paket installiert sein. Außerdem ist »configure« der Aufenthaltsort der »libMagick«-Bibliotheken explizit mitzuteilen (obwohl diese ganz normal unter »/usr/lib« installiert sind). Die dynamische »libMagick« - zumindest in der hier verwendeten Version - ist zudem von Hand zu linken. Ein erneuter Versuch, der diese Vorgaben berücksichtigt, führt schließlich zum Erfolg:
./configure --with-magick-lib-dir =/usr/lib
make all
gcc -shared -o
lib/.libs/libJMagick.so.5.0.510 obj/magick/*.lo -lMagick
su -c"make install"
Knappe, aber ausreichende Dokumentation
Die Programme (ein Jar und eine dynamische Bibliothek) landen in »/usr/ local/lib«. Ein »make javadoc« generiert und installiert die Dokumentation des Java-API unter »/usr/local/doc/javadoc«. Sie enthält im Wesentlichen eine Übersicht darüber, welche Methoden mit welchen Parametern aufgerufen werden müssen. Viel mehr ist auch nicht erforderlich, da das API sauber und einfach strukturiert und wenig mehr als ein Wrapper für verschiedene Structs und Funktionen auf C-Ebene ist. Ein Blick in die C-API[2], meist auch als Teil von Image Magick lokal installiert, klärt eventuell offene Fragen.
Drei kleine Beispiele sollen zeigen, wie einfach JMagick anzuwenden ist: für die Ausgabe von Bildinformationen, das Anzeigen sowie das Bearbeiten von Bildern. Die volle Mächtigkeit des Toolkits erschließt ein Blick in »man ImageMagick«. Was dort beschrieben ist, sollte auch mit Java funktionieren. Das erste Beispielprogramm (Listing 1) gibt zu allen als Argumente übergebenen Dateien verschiedene Informationen aus (siehe Abbildung 1).
Abbildung 1: Deskriptive Informationen zur Grafikdatei, ausgegeben mit JMagick (Listing 1).