AMIGA-Magazin · Ausgabe 7/03 · Workshop: ImageMagick (Folge 1)

Aktuelles Heft 7/03

Bild für Bild


Das Paket »ImageMagick« ist eine umfangreiche Sammlung von Tools, um Bilder zu bearbeiten. Dabei handelt es sich, anders als bei vielen anderen Programmen, zunächst einmal um schlichte Shell-Befehle. Das öffnet Tür und Tor für die Einbindung in Skripte und alle möglichen anderen Anwendungen.

von Martin Steigerwald

Das Toolset »ImageMagick« gibt es für viele unterschiedliche Plattformen wie Linux, Mac, Windows oder VMS. Vor kurzem portierte Diego Casorran Version 5.5.5 von ImageMagick für Amiga.

ImageMagick besteht aus mehreren über die Shell ansprechbaren Programmen (s. »Die Tools im Über-blick«). Die Amiga-Version enthält alle Tools, bis auf »display«, zum Anzeigen von Bilder und »import« zum Erstellen von Screenshots, die auf Funktionen des X-Servers zurückgreifen, sowie »animate« zum Erstellen von Animationen. Auch die unter Linux verfügbare X11-Oberfläche zu ImageMagick ist in der Amiga-Version nicht enthalten.

Unendliche Möglichkeiten: Die Beispielseite der ImageMagick-Dokumentation gibt einen guten Überblick. Genau untersucht:
»identify« weiß über das untersuchte JPEG-Bild einiges zu berichten.
Katalogisiert:
Mit einem einfachen Befehl erstellt ImageMagick eine Miniatur-Übersicht über mehrere Bilder.
Informativ:
Die ImageMagick-Homepage informiert umfassend über das Programm und seine Fähigkeiten.

Mit den verbleibenden Tools lässt sich jedoch schon jede Menge anfangen. Sie können ein Bild in ein anderes Format umwandeln, es rotieren, schärfen, die Anzahl der verwendeten Farben reduzieren, Filter anwenden oder Spezialeffekte hinzufügen (s. »Unendliche Möglichkeiten«). Sie können mehrere Bilder miteinander kombinieren oder mehrere Bilder als Thumbnails in einer Art Bildkatalog anordnen. Sie können Text oder geometrische Formen auf ein Bild zeichnen, ein Bild mit einem dekorativen Rand versehen oder ein Bild fürs Web mit transparentem Hintergrund versehen.

Unix-Pfade

Unter Unix werden alle Laufwerke, also z.B. eine Festplattenpartition oder ein CD-ROM-Laufwerk, als Verzeichnisse in den Verzeichnisbaum eingebunden. Die automatische Umwandlung von Unix- in Amigapfade durch die »ixemul.library« nimmt an, dass das erste Verzeichnis in einem absoluten Unix-Pfad für das entsprechende Amiga-Laufwerk oder eine Zuweisung steht. So wird aus /Daten die Bezeichnung Daten: und aus der Bezeichnung

/usr/lib dann usr:lib.

ImageMagick ist der Amiga-Port, das Pfade in Unix-Schreibweise erwartet. So schreiben Sie z.B. beim Aufruf eines ImageMagick-Programms

/daten/bilder/apfel.jpg
um auf die Datei
Daten:Bilder/apfel.jpg


zuzugreifen. Ins übergeordnete Verzeichnis gelangen Sie nicht mit »/« sondern mit »../«. So schreiben Sie für ImageMagick ../apfel.jpg statt /apfel.jpg, um auf die Datei apfel.jpg im übergeordneten Verzeichnis zuzugreifen. Wenn Sie stattdessen doch /apfel.jpg schreiben, wird Ihr Amiga Sie wiederholt auffordern, einen Datenträger namens apfel.jpg einzulegen. Auch die Zeichen für Dateimuster sind andere: Statt #? verwenden Sie *. Das ? können Sie nach wie vor verwenden, um ein einziges beliebiges Zeichen anzugeben. So meint *.png z.B. alle Bilder mit der Datei-Endung .png und * alleine steht für alle Dateien im betreffenden Verzeichnis.
Das ImageConvert-ARexx-Skript enthält eine kleine Routine, um Pfadangaben automatisch umzuwandeln. Diese sollte, zumindest in den meisten, typischen Fällen, brauchbare Ergebnisse liefern. Einen Pfadnamen mit Leerzeichen lassen sich wie gewohnt mit Anführungszeichen angeben:

"/Urlaubsbilder Italien/Familie am Strand.jpg"

ImageMagick unterstützt 87 Bild- und Animationsformate, darunter JPEG, PNG, BMP und TIFF. Das Amiga-ILBM-IFF-Format wird in der Grundkonfiguration nicht unterstützt. Teilweise benötigt es zusätzliche Programme, die möglicherweise nicht alle für AmigaOS portiert sind. Für das Zeichnen von Text benötigt ImageMagick »GhostScript«. Der erste Teil des ImageMagick-Workshops geht auf die grundlegende Arbeitsweise von ImageMagick ein. Alle gezeigten Beispiele funktionieren ohne Zusatzprogramme. Durch ihre Zugänglichkeit über die Befehlszeile lassen sich die ImageMagick-Programme in Skripten und in nahezu jeder beliebigen Anwendung, die Shell- oder ARexx-Befehle oder -Skripte ausführen kann, verwenden. So können Sie ImageMagick z.B. in »Directory Opus Magellan« einbinden oder auch via ARexx in die Workbench von AmigaOS 3.9 oder 3.5.

»ImageConvert«, ein ARexx-Skript um Bilder umzuwandeln, liegt bereits in einer Version vor, die neben »Personal Paint«, »ArtEffect« und »Photogenics 2« nun auch ImageMagick unterstützt.

Neben der Befehlszeilen-Schnittstelle gibt es für ImageMagick noch eine ganze Reihe anderer Anwender-Schnittstellen: ImageMagick lässt sich damit über Perl, C++, C, Python, PHP und Java ansprechen. Der Amiga-Port kommt komplett mit der PerlMagick-Umgebung. Damit lässt sich ImageMagick, ähnlich wie mit der PHPMagick-Umgebung, über ein Perl-CGI- oder ein PHP-Skript direkt von einer Webseite aus nutzen. Das sollte bei entsprechender Apache-Installation durchaus auch auf dem Amiga möglich sein. Dieser Artikel beschränkt sich allerdings auf die Nutzung von ImageMagick über die Befehlszeilen-Schnittstelle.

Erste Schritte
Die Installation von ImageMagick gestaltet sich relativ einfach. Entpacken Sie das knapp 14 MByte große Archiv ­ unter AmigaOS 3.9 verwenden Sie dafür einfach »UnArc« ­ und sorgen Sie dafür, dass die Programme in der utilities-Schublade von ImageMagick über die Shell zugänglich sind. Dazu können Sie sie zum Beispiel nach »C:« kopieren oder aber Sie fügen betreffenden Pfad der Liste der System-Suchpfade hinzu:

Path ADD <Ihr-Verzeichnis>/ImageMagick-5.5.5/

Damit diese Änderung überall und auch nach einem Neustart zur Verfügung steht, schreiben Sie diesen Befehl einfach in die »S:User-Startup«-Datei. Damit ImageMagick funktioniert, muss auch die »ixemul.library« des GeekGadgets-Projektes installiert sein. Diese Bibliothek stellt eine Unix-Emulationsschicht zur Verfügung, die es erleichtert Unix-Programme auf den Amiga zu portieren. Sie können einen mehr oder weniger großen Anteil des GeekGadgets-Projektes installieren oder einfach nur die ixemul.library nach LIBS: kopieren.

Im Distributionsarchiv des Amiga-Ports von ImageMagick fehlen einige Einstellungs-Dateien für ImageMagick, deren Dateiname alle auf »*.mgk« enden. Diese hat Diego Casorran auf unseren Hinweis hin nachträglich in ein Extra-Archiv gepackt. Sie liegen im Unix-Verzeichnis-Baum üblicherweise im Verzeichnis /usr/lib/ImageMagick-5. 5.5-Q16/. Der Amigapfad
hierfür lautet:

usr:lib/ImageMagick-5.5.5-Q16/ (s.»Unix-Pfade«).

Wenn Sie GeekGadgets installiert haben oder in Ihrem System aus anderen Gründen bereits eine usr:-Zuweisung existiert, dann können Sie das Archiv mit den Einstellungsdateien einfach nach usr: entpacken. Benennen Sie dann einfach das entpackte Verzeichnis usr-lib nach lib: um, damit ImageMagick die Dateien auch finden kann.

Wenn auf ihrem System keine usr:-Zuweisung existiert, entpacken Sie das Archiv einfach in das ImageMagick-Verzeichnis, benennen Sie das entpackte Verzeichnis usr-lib nach lib um und fügen Sie folgenden Befehl in Ihre user-startup-Datei ein:

Assign usr: <Ihr-Verzeichnis>/ImageMagick-5.5.5/

Damit ist die Installation von ImageMagick abgeschlossen. Wenn Sie möchten, können Sie ImageMagick über die Einstellungsdateien nach ihren Wünschen konfigurieren. Bedenken Sie dabei, dass in der Amiga-Version möglicherweise nicht alle Optionen funktionieren. Die Konfigurationsdateien sind alle im XML-Format. Sie können Sie mit einem beliebigen Texteditor ändern.

»colors.mgk« enthält Definitionen zu vordefinierten Farben. »delegates.mgk« enthält Informationen, an welche Programme ImageMagick bestimmte Aufgaben delegieren kann. So unterstützt ImageMagick zum Beispiel die Formate MPEG-1 und MPEG-2 nur über externe De- und Encoder. In »log.mgk« können Sie angeben, wie ImageMagick seine Aktivitäten protokollieren soll. Aus »magic. mgk« entnimmt ImageMagick, wie es verschiedene Bildformate erkennen kann. »type.mgk«, welches »type-ghostscript. mgk« einbindet, enthält Informationen über unterstützte Zeichensätze zum Erstellen von Texten. Soweit kurz zu den Konfigurationsmöglichkeiten.

Um die folgenden grundlegenden Beispiele nachzuvollziehen, müssen Sie an den Konfigurationsdateien nichts ändern. Bedenken Sie, dass ImageMagick bei manchen Operationen, wie z.B. dem Erstellen eines Bildkataloges aus 70 Bildern gerne auch schon mal 40 MByte und mehr an Arbeitsspeicher nutzt. ImageMagick scheint nicht speziell an Betriebssysteme angepasst zu sein, die keinen virtuellen Speicher unterstützen, und so holt es sich einfach, was es braucht. Erschrecken Sie nicht, wenn Sie sich die Dateigrößen der einzelnen Befehle anschauen. Die ImageMagick-Programme sind beim Amiga-Port statisch gelinkt. Das bedeutet, dass alle Bibliotheken (s. »Shared objects«), die ImageMagick verwendet, direkt an jede ausführbare Datei angefügt werden. Insgesamt ist ImageMagick eher etwas für gut ausgerüstete Amigas! Selbst ein 68060-Prozessor lässt sich mit ImageMagick ohne weiteres länger beschäftigen. Nun, wenn Sie das alles nicht abschreckt, testen Sie ImageMagick doch einfach mal!

identify /Bilder/Weltraum/Earthcol.jpg

Der »identify«-Befehl macht nichts anderes als nähere Informationen zu der angegebenen Bilddatei auszugeben:

/Bilder/Weltraum/Earthcol.jpg JPEG 720x360+0+0 DirectClass 8-bit 85.1k 0.040u 0:01

Rotiert:
Mit einem Befehl rotieren Sie ein Bild oder mehrere Bilder um einen beliebigen Winkel.

Beachten Sie dabei die Unix-Schreibweise beim Dateipfad (s. »Unix-Pfade«). Möchten Sie noch mehr wissen? Dann verwenden Sie »identify« mit der Option »-verbose« (s. »Genau untersucht«):

identify -verbose /Bilder/Weltraum/Earthcol.jpg

Die darauf folgende englischsprachige Ausgabe erklärt Ihnen auch die Bedeutung einiger Angaben aus der einzeiligen Ausgabe von oben. So ist »85.1k« zum Beispiel die Größe der Bilddatei. Mehr über »identify« und alle seine Optionen erfahren Sie entweder in der nicht für Amiga-Textanzeiger angepassten man-Page zu »identify«, »identify.1«, oder aber in der HTML-Dokumentation zu ImageMagick, die Sie aufrufen können, indem Sie die Datei »ImageMagick. html« mit einem Browser anzeigen. Diese englischsprachige Dokumentation beschreibt jedes einzelne ImageMagick-Programm genau mit Beispielen und allen Optionen (s. »Informativ«).

Bilder wandeln, Bildkataloge und mehr
Zum Umwandeln von Bildern können Sie z.B. das »convert«-Programm verwenden. Um ein PNG-Bild beispielsweise in ein JPEG-Bild umzuwandeln verwenden Sie folgenden Befehlsaufruf:

convert apfel.jpg apfel.png

Wenn Sie stattdessen aus einem JPEG-Bild ein auf 120 x 120 Pixel verkleinertes JPEG-Bild als Miniaturansicht erzeugen wollen, schreiben Sie stattdessen:

convert -size 120x120 apfel-gross.jpg -resize apfel-klein.jpg

Die doppelte Angabe der Größe macht hier in der Tat Sinn. »-resize« gibt die Größe des Zielbildes an und »-size« sagt der JPEG-Bild-Laderoutine (dem JPEG -Decoder), dass das Quell-Bild auf 120 x 120 Pixel verkleinert wird. Dadurch kann die Laderoutine schneller arbeiten, indem Sie das JPEG-Bild gar nicht in der vollen Auflösung dekodiert.

Wenn Sie wissen möchten, welche Bildformate ImageMagick unterstützt, dann geben Sie folgenden Befehlsaufruf ein:

Die Tools im Überblick

animate: Animiert eine Bildfolge (nicht im Amiga-Port enthalten).
composite: Kombiniert zwei Bilder miteinander oder berechnet die Unterschiede zwischen zwei Bildern.
convert: Wandelt ein Bild oder eine Bildfolge in ein anderes Format um. Dabei können verschiedene Bildverarbeitungs-Operationen zusätzlich ausgeführt werden.
display: Zeigt ein Bild an und erlaubt dessen interaktive Modifikation (nicht im Amiga-Port enthalten).
identify: Beschreibt Format und Charakteristika eines Bildes oder einer Bildfolge.
import: Macht einen Schnappschnuss einer Anwendung bzw. eines X-Schirms (nicht im Amiga-Port enthalten).
mogrify: Transformiert ein Bild oder eine Bildfolge ­ z.B. Skalierung, Rotation, Farbreduzierung usw.
montage: Ordnet mehrere Bilder in einheitlicher Größe einem Gitter an (Bildkatalog).
confure: Führt ein Magick Scripting Language (MSL) XML-Skript aus.

convert -list format

»R« steht für Lese-Unterstützung, »W« für Schreib-Unterstützung. Wollen Sie stattdessen für alle PNG-Bilder im aktuellen Verzeichnis Miniansichten für einen Bildkatalog erstellen, verwenden Sie statt »convert« den Befehl »montage« (s. »Katalogisiert«):

montage -geometry 120x120+10+10 *.png bildkatalog.png

Damit erstellt ImageMagick aus allen Dateien im aktuellen Verzeichnis mit der Endung »png« einen Bildkatalog. Jedes einzelne Bild wird dabei auf eine Größe von 120 x 120 Pixel verkleinert und im Abstand von 10 Pixeln voneinander platziert. Das Ergebnis wird in die Datei »bildkatalog. png« geschrieben. Dabei platziert ImageMagick standardmäßig maximal 20 Miniaturansichten, 5 Reihen zu je 4 Bildern, in ein Katalogbild. Wenn Sie mehr als 20 Bilder einspeisen, werden dementsprechend mehrere Katalogbilder erstellt. Mit der Option »-tile 3x2« werden stattdessen 3 Reihen à 2 Bilder erzeugt. Statt dem Dateimuster »*.png« können Sie auch mehrere mit Leerzeichen getrennte Dateinamen angeben:

montage -geometry 120x120+10+10 Apfel.png Banane.png Birne.png Mango.png Obst.png

Der letzte Dateiname ist dann der Name für den Bildkatalog. »convert« kann ebenfalls mehrere Bilder auf einmal bearbeiten. Dabei nimmt es den Zieldateinamen als Grundlage und nummeriert alle erstellten Bilder selber durch.

convert *.jpg test.png

Manche Bildformate wie das ImageMagick-»miff«-Format enthält mehrere Bilder in einer Datei. Wird ein solches Format verwendet, packt ImageMagick alle Quellbilder in eine Zieldatei.

Das »miff«-Format können Sie immer dann verwenden, wenn Sie sicher stellen wollen, dass keine von ImageMagick unterstützten Merkmale verloren gehen. Sie können auch gleich mehrere Bilder in einer einzigen MIFF-Datei archivieren:

convert *.png test.miff

packt alle PNG-Bilder im aktuellen Verzeichnis in die Datei »test.miff«. Auspacken können Sie ein solches Bildarchiv wieder mit:

convert test.miff *.png

Allerdings gehen dabei die ursprünglichen Dateinamen verloren. Vorsicht auch bei verlustbehafteten Formaten wie JPEG. Da geht bei jedem Auspacken Bildinformation verloren!

Für das Umwandeln mehrere Bilder in ebensoviele Zielbilder empfiehlt es sich, statt »convert« das ImageMagick-Programm »mogrify« zu verwenden. Dieses wendet verschiedene Bildbearbeitungs-Operationen auf ein oder mehrere Bilder an. So können Sie zum Beispiel leicht alle GIF-Bilder in einem Verzeichnis in PNG-Bilder umwandeln.

Verwendete Software
Software URL
ImageMagick 5.5.5 Amiga-Port http://Amiga.SourceForge.net
ImageMagick 5.5.5 mgk-Dateien http://Amiga.SourceForge.net
ImageConvert http://helios.lichtvollst.de/amiga/programme/
  AmiNet: gfx/conv/ImageConvert.lha
GeekGadgets http://www.geekgadgets.org
ixemul.library AmiNet: util/libs/ixemul-48.0.lha
  AmiNet: dev/gg/ixenv.lha
  AmiNet: util/libs/ixemul-48.2-060.lha (68060er-Version)

mogrify -format png *.gif

Oder Sie reduzieren die Farbzahl mehrerer PNGs:

mogrify -colors 16 *.png

Beachten Sie, dass hierbei alle Ausgangsbilder überschrieben werden. »mogrify« erzeugt nur dann neue Bilder, wenn sich durch eine Formatänderung neue Dateinamen ergeben. Um alle Bilder in einem Verzeichnis mit Rücksicht auf auf das Seitenverhältnis auf »640x480« zu skalieren können Sie

mogrify -resize 640x480 *

verwenden. Wenn Sie an die Größenangabe ein »!« daranhängen, wird ohne Berücksichtigung des Seitenverhältnisses exakt auf 640 x 480 skaliert. Mehrere JPEG-Bilder Ihrer Digitalkamera können Sie mit

mogrify -rotate 90 *.jpg

um 90 Grad im Uhrzeigersinn rotieren lassen.
Damit soll der erste Teil des ImageMagick-Workshops erst einmal enden. Die Befehle »convert«, »montage« und »mogrify« bieten ebenso wie »identify« jede Menge weitere Optionen zum Probieren.

lb


 Hauptseite © 2003 All Rights Reserved. Alle Rechte vorbehalten Franzis' Verlag GmbH
Veröffentlichung und Vervielfältigung nur mit schriftlicher Genehmigung des Verlags

Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster AMIGA schicken.
Zuletzt aktualisiert am 9. 6. 2003.