ImageMagick

Aus wiki.archlinux.de

ImageMagick ist eine Toolsammlung zum Bearbeiten von Rastergrafiken. Sämtliche Aktionen werden über Befehlszeilen ausgeführt, und umfassen in ihrer Gesamtheit Funktionen, die sich mit grafischen Bildbearbeitungsprogrammen messen lassen können.

==

Funktionsumfang

Insgesamt besteht ImageMagick aus elf umfangreichen Einzelprogrammen, die sowohl untereinander, als auch mit anderen Programmen verkettet werden können, um komplexe Aufgaben zu erledigen.

convert

Mittels convert können – wie mit allen ImageMagick-Tools – weit über 100 Dateiformate lesend sowie schreibend bearbeitet werden. convert ist das „wichtigste“ der ImageMagick-Tools.

Mit ihm werden Dateien von einem Format in ein anderes Format konvertiert. Dabei können diverse Optionen gesetzt, und Filter angewendet werden.

mogrify

Dieses Tool dient zum Umwandeln von Dateien. Es kann genau so verwendet werden, wie convert, der Unterschied ist jedoch, dass die Originaldatei direkt bearbeitet wird.

Man kann mit mogrify also nicht bloß eine Datei je Durchgang bearbeiten, sondern kann auch eine Dateimaske angeben. Es werden dann alle Dateien bearbeitet, wobei das Ergebnis jeweils in die aktuell bearbeitete Datei zurückgeschrieben wird.

montage

Will man mehrere Rastergrafiken in einer Datei vereinen, kann man dies mittels montage durchführen. Hierbei hat man nicht nur auf die Bildzusammenstellung, sondern auch auf die Position und Größe sowie die Effekte der Einzelbilder Einfluss.

montage nimmt zusätzlich zu den Parametern eine beliebige Anzahl an Einzelbildern, gefolgt vom gewünschten Dateinamen der Bildzusammenstellung als letztem Namen in der Dateinamensliste an.

display

„Tux im Regen“, angezeigt von display mit sichtbarem Menü

Dieses ist eines der beiden ImageMagick-Tools, die über ein GUI verfügen. Mittels display können Bilder angezeigt werden. Mittels einfachem Klick auf das Bild erscheint ein Menü, über welches diverse Funktionen per GUI ausgeführt werden können.

Die Navigationsfunktionen sind allerdings nicht sonderlich intuitiv, für die schnelle Betrachtung eines Bildes genügt es aber. Auch, wenn man „live“ testen will, wie eine Option sich auf ein Bild auswirkt, ohne die Befehlszeile zu bemühen, kann man display verwenden.

Darüber hinaus bietet display auch die Möglichkeit das X-Hintergrundbild zu setzen.

Weitere Tools

Beim Ausführen von import zieldateiname.png wandelt sich der Mauscursor in ein Auswahlkreuz. Nun kann man mittels einfachem Klick ein Fenster auswählen. Per Click&Drag wählt man einen Bereich aus. Das Fenster oder der Ausschnitt wird dann als zieldateiname.png abgespeichert.

Das Tool identify ermöglicht die Ausgabe verschiedener Bildinformationen. Dies umfasst den Dateitypen, die Bildgröße, die Bildmaße, die Farbtiefe und weitere Charakteristika der übergebenen Bilddatei(en).

Ähnlich wie mit montage kann man mit dem Tool composite Bilder kombinieren. die Stärken von composite liegen beim Überblenden und Verschmelzenlassen der Einzelbilder.

Das Tool compare ermöglicht das Vergleichen zweier Bilder. Dabei kann man sich das Ergebnis sowohl visuell in Form eines Differenzbildes, als auch in Form einer mathematischen Analyse ausgeben lassen.

stream ermöglicht das Extrahieren von definierten Bildinformationen (Kanäle, Pixelbereiche, Farbinformationen, etc.) im Rohformat. Auch hier können diverse Optionen und Filter definiert werden.

ImageMagick verfügt über eine eigene Scripting-Sprache (das XML-Basierende „MSL“, die „Magick Scripting Language). Das Tool conjure dient zum Parsen und Ausführen von MSL-Scripten.

Das Tool animate verfügt, wie display über ein GUI, und dient dazu, Rastergrafiken in Animationen (GIF) zu verarbeiten. Über das Menü können verschiedene Optionen eingestellt werden, und über diverse Befehlszeilenparameter kann die Darstellung der einzelnen Bilder angepasst werden.

Praxisnahe Verwendung

Aufgrund des großen Funktionsumfangs jedes einzelnen ImageMagick-Tools, und der hohen Anzahl dieser Tools kann in diesem Wiki-Artikel nicht auf alle Funktionen aller Tools eingegangen werden, daher folgen hier nur einige Beispiele der Verwendung des ImageMagick-Toolpakets, wie sie auch häufig in der Praxis vorkommt.

convert

Hat man eine Anzahl von JPEG-Dateien, für die man jeweils ein PNG-Vorschaubild generieren will, dass 200 Pixel breit ist, und über einen schwarzen, ein Pixel breiten Rahmen verfügt, geht dies zum Beispiel mittels folgender Schleife.

for IMG in *.jpg; do
  TARGET="$(basename ${IMG} .jpg)_prev.png"
  convert -geometry 200x -border 1x1 -bordercolor black "${IMG}" "${TARGET}"
done

Will man stattdessen gleichhohe Vorschaubilder haben, benutzt man -gemoetry x198. 198 deshalb, weil der Rahmen außen um das Bild gelegt wird. Bei einem Rahmen, der einen Pixel breit ist, sind das je Dimension zwei Pixel. Das Vorschaubild ist also 200 Pixel breit, bzw. hoch.

Man kann convert auch anweisen, das Bild entweder maximal 198 Pixel hoch, oder maximal 198 Pixel breit zu machen, dann verwendet man -geometry 198x198. Nun wird, je nach dem was zutrifft, das Bild entweder 198 Pixel breit oder 198 Pixel hoch gemacht. Die Ausdehnung in der anderen Dimension ist auf jeden Fall geringer als 198 Pixel.

Will man convert anweisen, Das Bild exakt auf 198×198 Pixel zu verändern, geht dies ebenfalls, hier verwendet man -geometry 198x198!, dabei wird das Bild nicht unter Berücksichtigung des Seitenverhältnisses geändert, sondern auch verzerrt, um die angegebenen Ausmaße anzunehmen.

Will man zur Ansicht eines Bildes dieses erst durch Filter verändern, und dann direkt anzeigen, ohne es zu speichern, zum Beispiel, weil es sich um einen generierten Graphen handelt, der anhand von Daten durch ein anderes Programm erzeugt wurde, und nun nachbearbeitet und zur Kontrolle angezeigt werden soll, so geht dies ebenfalls sehr einfach, da alle ImageMagick-Tools STDIN und STDOUT voll unterstützen.

creator -output stdout | convert -geometry 800x600! - - | display -

Das fiktive Programm creator gibt anhand seiner Parameter eine Bilddatei auf STDOUT aus. convert liest diese Daten per STDIN ein, bringt die Bildausmaße auf 800×600 Pixel und gibt die Daten über STDOUT wieder aus. display liest diese Ausgabe per STDIN ein, und zeigt das aus den Daten resultierende Bild an.

mogrify

Die Funktionsweise von mogrify unterscheidet sich von der Funktionsweise von display nur in Kleinigkeiten. So wird zum Beispiel kein Zieldateinamen angegeben, da mogrify immer direkt mit den übergebenen Dateien arbeitet.

Anders als display, das immer nur mit einer Datei zur Zeit arbeiten kann, kann mogrify kann auch mit Wildcards umgehen, allerdings kann es nicht nach STDOUT schreiben, sondern nur immer wieder zurück in die entsprechende Datei.

Für mogrify kann man ansonsten die selben Parameter verwenden, wie auch für display.

montage

Das anhand des Beispiels generierte Indexbild

Wenn man viele Dateien in einem Verzeichnis hat, und diese in einer Indexdatei zusammengefasst zur Voransicht zum Beispiel an einen Kunden oder eine Druckerei geben möchte, kann man folgendes machen.

montage \
  -geometry x150 \
  -tile 4x \
  -label "%f\n%W×%Hpx, %r" \
  -border 1x1 \
  -bordercolor black \
  -shadow \
  -background \#dedede \
  -title "Index zur Ansicht" \
  *.jpg index.png

Zur besseren Übersicht wurden die einzelnen Optionen jeweils in eigene Zeilen geschrieben und mittels \ verkettet. Dies ist nicht nötig, hat sich bei sehr umfangreichen Befehlszeilen aber als praktisch erwiesen.

Die Optionen für -label werden in der Online-Dokumentation zu ImageMagick sehr ausführlich beschrieben. Ebenso wie die weiteren Optionen, die den ImageMagick-Tools übergeben werden können.

Siehe auch

Weblinks