JMagick Tutorial

ImageMagick & Java

JMagick (Windows + Linux)

deutsch english

Permalink:

Diese Anleitung befasst sich damit, wie JMagick unter Windows und Linux in Java Anwendungen eingesetzt werden kann. Dafür wird ein Windows XP und ein Ubuntu Rechner verwendet. Andere (nicht-Debian) Distributionen erfordern kleinere Anpassungen. Zudem wird Java 1.6 von Sun unter beiden Betriebssystemen verwendet.

ImageMagick:

Windows-Nutzer möchten erst einmal die Binaries herunterladen: exe und dll Installer gibt es hier: http://imagemagick.org/script/binary-releases.php Linux-Nutzer sollten die Source Installation bevorzugen, da leider bei den Binaries fast bei allen Versionen gcc einen Versionskonflikt hatte. Laut Bug Report wäre es nötig, einen veralteten Compiler zu installieren, wovon ich abraten möchte. Deshalb bitte unter http://imagemagick.org/script/install-source.php#unix die ImageMagick.tar.gz herunterladen. Wie dort auch nachzulesen ist, sollten wir in der Shell im Installationsverzeichnis so fortfahren:

#wget http://...Url zur aktuellen ImageMagick.tar.gz
tar xvfz ImageMagick.tar.gz
cd ImageMagick-*
./configure
make
make install
make check
Bei der aktuellen Version der Source (Februar, 2009) läuft die Installation reibungslos ab.

JMagick:

Weiter geht es mit JMagic, welches ImageMagick voraussetzt. Hierbei handelt es sich um einen Wrapper, womit die - eigentlich in C geschriebenen Objekte - für Java Entwickler zur Verfügung stehen. Unter http://downloads.jmagick.org/ suchen wir uns also wieder für eine aktuelle Version für Windows eine jmagick-win-*-Q16.zip Datei, die wir dann herunterladen und entpacken. Für Linux stehen auf selbiger Downloadseite die Sources zur Verfügung: jmagick-*-src.tar.gz wäre unser Kandidat. Wir sollten zuvor die Java-Pfade in der Bash definiert haben, was ich folgendermaßen für Sun Java 6 sicherstellte

export JAVA_HOME=/usr/lib/jvm/java-6-sun/bin/java
export PATH=$PATH:/usr/lib/jvm/java-6-sun/bin
Wenn ./configure im folgenden streikt, habe ich weiter unten noch einen Alternativevorschlag.
#wget ...jmagick...tar.gz
tar xvfz jmagick*.tar.gz
cd JMagick*
./configure
make all
make install
Alternative für ./configure: ./configure --prefix=/usr/local/jmagick --with-java-home=/usr/lib/jvm/java-6-sun/ --with-java-includes=/usr/lib/jvm/java-6-sun/include/:/usr/lib/jvm/java-6-sun/include/linux/
Eigenartigerweise überspringt make bei Fehlern hierbei auch mal eine Datei, was mir bei einer älteren Version passiert ist. Dennoch funktionierte diese Version auf dem System. Wie in einigen Foren empfohlen wird, suche ich mir noch manuell die .so Bibliothekdateien heraus und kopiere sie als root nach /usr/lib/ um sicherzustellen, dass Java sie finden kann. Die jmagick.tar sollte man in das lib Verzeichnis von TomCat und Java kopieren. Unter Windows suche ich dementsprechend nach der JMagick.dll und stelle sicher, dass der Pfad, in dem sie sich befindet, im System $PATH aufgelistet ist. Den PATH betrachtet und ändert man hier: Systemsteuerung; Erweitert; Umgebungsvariablen. Unter Windows kopiere ich zudem die jmagick.jar in das C:\Programme\Java\jre6\lib Verzeichnis. Die jmagick.dll wäre gerne auch im Ordner C:\Programme\Java\jdk1.6.0_12\bin

Nutzung von JMagick:

Dennoch rate ich dazu, die .tar dem Projekt hinzuzufügen und im Quelltext der Java (Servlet) Anwendung diesen Schnipsel einzubauen: System.setProperty("jmagick.systemclassloader", "no");

Auch wenn ImageMagick selbst bestens dokumentiert ist, fällt das Wiki von JMagick sehr mager aus. Auch Beispiele hierzu fehlen noch im Netz. Derzeit entwickle ich eine Grafikanwendung, die unter anderem Bilder konvertiert, die Größe/Qualität/Auflösung und etliche Effekte manipuliert. Zwar handelt es sich dabei nicht um OpenSource, aber mit Erfahrung kann gedient werden.


deutsch english

This tutorial copes with setting up JMagick on Windows and Linux OS to use the ImageMagick Engine within Java Applications or Servlets. The examples are tested with Windows XP and Ubuntu. Other distributions may require little adaptions. Sun Java 1.6 will be used on both sample machines.

ImageMagick:

Windows Users may download the binaries first: exe und dll installer can be found at: http://imagemagick.org/script/binary-releases.php Linux User might prefer the sources, because I worry about most of the binary installs failing because of gcc versioning conflicts. That's why we download the source codde from: http://imagemagick.org/script/install-source.php#unix (ImageMagick.tar.gz) As You can see there, You can install it within the Shell this way:

#wget http://...Url to ImageMagick.tar.gz
tar xvfz ImageMagick.tar.gz
cd ImageMagick-*
./configure
make
make install
make check
With the newest Sources (February, 2009) no error came up.

JMagick:

Next, we install JMagic, which requires ImageMagick. You can describe JMagick as wrapper to provide the Objects - originally written in C - for Java developers. Look for jmagick-win-*-Q16.zip at http://downloads.jmagick.org/ to download and unpack. For Linux on the same page the source coddes cam ne found: jmagick-*-src.tar.gz is our candidate. Lets define the Java Paths for the bash before continueing.

export JAVA_HOME=/usr/lib/jvm/java-6-sun/bin/java
export PATH=$PATH:/usr/lib/jvm/java-6-sun/bin
In the case of ./configure failing, see the alternative below.
#wget ...jmagick...tar.gz
tar xvfz jmagick*.tar.gz
cd JMagick*
./configure
make all
make install
Alternative for ./configure: ./configure --prefix=/usr/local/jmagick --with-java-home=/usr/lib/jvm/java-6-sun/ --with-java-includes=/usr/lib/jvm/java-6-sun/include/:/usr/lib/jvm/java-6-sun/include/linux/
In wonder about make skipping jobs though errors are shown, which happens to me when compiling older versions. However, the same binaries worked on my system. Like some board suggest, we may look for the .so libraries manually and copy it (sudo) to /usr/lib/ to make sure, Java is able to find them. You also have to copy the jmagick.tar to the lib directory of TomCat and Java. With Windows we look for JMagick.dll and make sure, it's path directory is listed in Windows Systems $PATH. Edit and look it up: Start; Control Panel; System; Advanced; Environment Variables Additionally, we copy the file jmagick.jar to C:\Programme\Java\jre6\lib and the jmagick.dll to C:\Programme\Java\jdk1.6.0_12\bin

Usage:

Although we copied the binaries and .jar into the right directories, I suggest to add the jmagick.jar to the Java (Servlet) Application Project and add this line to Your java-Source Code: System.setProperty("jmagick.systemclassloader", "no");

Although ImageMagick itself is documented properly, the JMagick Wiki is very poor. Examples are missing, too, for lots of methods, JMagick provides. At the moment I am developing an application for graphics and image manipulation. It's not Open Source, but let me help You with experience.