ImageMagick: Die Magie der Bildverarbeitung im Terminal

Bildverarbeitung in der Komandozeile, das mag sich für einige sicherlich ziemlich merkwürdig anhören. Und es gibt mit Sicherheit eine Menge guter Gründe, ein Programm wie Photoshop oder GIMP zu verwenden. Doch es gibt durchaus auch manche Aufgaben, die sich wesentlich komfortabler über die Shell erledigen lassen. Man denke dabei vor allem an die Massenbearbeitung von Dateien. Gerade wenn man zum Beispiel tausende Bilder mal eben verkleinern, komprimieren und/oder in ein anderes Format umwandeln möchte, wird man die schnelle Umsetzung solcher Aufgaben in der Konsole sicherlich schnell zu schätzen lernen.

Ein solches Bildverarbeitungsprogramm, welches innerhalb der Konsole läuft, ist ImageMagick. ImageMagick bringt eine verdammt große Vielfalt an Funktionen mit sich, die ich bislang selbst noch längst nicht alle austesten konnte. Ich möchte an dieser Stelle aber einfach mal ein paar Beispiele für die Nützlichkeit von ImageMagick bei Bildbearbeitung geben.

Dazu sollen folgende Fallbeispiele dienen.

  1. 1. Bildformat umwandeln
  2. 2. Bild verkleinern und zuschneiden
  3. 3. Massenverarbeitung von Bildern
  4. 4. Bilder zusammenfügen
  5. 5. Animationen erstellen

Installation

Zunächst muss ImageMagick installiert werden. Im folgenden möchte ich kurz die Installation auf Basis der SourceCode-Version vorstellen.

1. Download

Die aktuelle Source-Code-Version von ImageMagick gibt es unter http://www.imagemagick.org/script/download.php

2. Entpacken

Je nachdem für welche Archivversion (also z.B. zip oder tar.gz) ihr euch entschieden habt, fällt das Entpacken unterschiedlich aus.
Hier möchte ich nur kurz auf die .tar.gz Variante eingehen. Diese lässt sich über Kommandozeile mit folgenden Befehlen entpacken:

cd /verzeichnis/des/archivs/
gunzip archivname.tar.gz
tar -xvf archivname.tar

3. Konfiguration & Kompilieren

Jetzt sollte ImageMagick als Quellcode in einem eigenen Ordner vorliegen. Hier nehmen wir nun die Konfiguration vor, um das ganze anschließend mit den zur Verfügung stehenden Routinen zu kompilieren:

./configure
make

Das meiste sollte hier eigentlich ziemlich automatisch ablaufen. Wer sich ein wenig besser mit Installationen unter Unix auskennt, kann hier natürlich auch entsprechende Änderungen der Konfiguration vornehmen. Zahlreiche Informationen zu verschiedenen Optionen gibt es in den beigelegten Installationshilfdateien (in Englisch).

4. Testen und Installieren

Im Prinzip sollte sich ImageMagick hier bereits verwenden lassen. Allerdings nur innerhalb dieses Ordners. Um es auch systemweit verfügbar zu machen, müssen wir es in ein entsprechendes Systemverzeichnis kopieren. Hierbei verwenden wir folgenden einfachen Befehl:

sudo make install

Dabei wird das innerhalb der Konfiguration gewählte Verzeichnis verwendet.
Nun können wir noch testen, ob alle Bestandteile auch richtig funktionieren oder ob etwas bei der Kompilierung schief gelaufen ist:

sudo make check

Beispiele


1. Bildformat umwandeln

Zunächst wechseln wir innerhalb des Terminals in das Verzeichnis, in dem die zu bearbeitende Bilddatei liegt:

cd /directory/path/

Anschließend wandeln wir das Bild image.jpg zu transfer.png um.

convert image.jpg transfer.png

Man sieht, dass wir hier die Routine convert aus dem ImageMagick-Paket mit zwei Parametern aufrufen. Der erste gibt die zu bearbeitende Datei an, der zweite den Output. Dies könnte beispielsweise auch ein Fenster des X-Servers sein:

convert image.jpg X:

Hier findet natürlich keine Umwandlung sondern lediglich die Anzeige des Bildes statt.


2. Bild verkleinern und zuschneiden

Jetzt wollen wir das Bild image.jpg um 50% verkleinern. Auch das ist schnell gemacht:

convert image.jpg -resize 50% resized.jpg

Neu hier ist der Parameter -resize 50%. Statt 50% kann man auch eine fixe Größe eingeben. z.B. 200×200 (px).

Ein Bild zuzuschneiden funktioniert mithilfe der Option -crop. Dort gibt man zunächst an, welche Größe man ausschneiden möchte und anschließend, von welcher Stelle aus dies geschehen soll. Um dies zu verdeutlichen habe ich folgende Grafik erstellt, die euch das untenstehende Beispiel einmal verdeutlicht:

Im folgenden Beispiel schneiden wir ab der Position +10 nach rechts und +10 nach unten eine Fläche von 200×200 Pixel aus unserem Bild aus. Die Ausgabe erfolgt hier über den X-Server.

convert image.jpg -crop 200x200+10+10 +repage X:

Eine solche Aufgabe, wie die zuletzt vorgestellte, wird man vermutlich aber eher mit einem Grafikprogramm bewerkstelligen wollen, das einem auch direkt anzeigt, was man da ausschneidet. Hier lohnt sich der Einsatz von ImageMagick wirklich nur dann, wenn man mehr als eine gleichartige Bilddatei nach demselben Muster bearbeiten möchte. Genau das möchte ich auch im nächsten Beispiel vorstellen:


3. Massenbearbeitung von Bildern

Zunächst benötigen wir den Shell-Befehl, mit dem wir Dateien massenweise verarbeiten können. Dies geschieht innerhalb einer Schleife, in die wir anschließend unseren ImageMagick-Befehl einbetten, der dann für alle Dateien immer wieder durchlaufen wird, ohne dass wir noch weiter groß etwas tun müssen.

Shell-Befehl:

for file in *.jpg; do echo $file; done

Innerhalb der Schleife, die hier über alle jpg-Dateien innerhalb des Verzeichnissen läuft, geben wir mithilfe von echo den Dateinamen aus, der hier in der Variable $file gespeichert ist.
An dessen Stelle setzen wir nun den gewünschten ImageMagick-Befehl:

for file in *.jpg; do convert $file -resize 20% $file; done


4. Bilder zusammenfügen

Bilder lassen sich in ImageMagick sehr schnell und bequem entweder horizontal oder vertikal zusammenfügen.

Horizontal:

convert -append 01.jpg 02.jpg out.jpg

Vertikal:

convert +append 01.jpg 02.jpg out.jpg


5. Animationen erstellen

convert 001.jpg 002.jpg 003.jpg -delay 50 ani.gif

Die drei nummerierten Dateien werden hier zu einem animierten GIF zusammengefügt. Zwischen den einzelnen Bildern wird mittels delay noch ein zeitlicher Abstand eingeführt.

Fazit

Gerade weil es wirklich sehr einfach zu bedienen ist, wenn man sich einmal an die Funktionsweise gewöhnt hat, verwende ich ImageMagick für verschiedene Aufgaben immer wieder recht gerne. Man kann es auch recht schön in Skripte integrieren. Und da die meisten Webhoster auf Unix-Basis arbeiten, sollte ImageMagick dort ebenfalls funktionieren. Wie man ImageMagick speziell für den Webbereich einsetzen kann, werde ich evtl. später in einem extra Artikel vorstellen.



Hat dir dieser Artikel gefallen? Abonniere doch unseren RSS-Feed und bleibe über alle weiteren Updates auf dem Laufenden!



Hinterlasse eine Antwort