Die freie Grafik-Toolbox ImageMagick bringt alle Funktionen einer ausgewachsenen Bildverarbeitung auf die Konsole.
Seit mehr als 30 Jahren entwickelt eine Gruppe von etwa 30 Personen die Grafik-Toolbox ImageMagick [1] und bietet sie unter der Apache-2-Lizenz kostenfrei an. Es handelt sich nicht um ein einzelnes Programm, sondern um ein Set kompakter Werkzeuge für die Kommandozeile. Neben einer Linux-Version existieren Varianten für Windows, MacOS, iOS, Android und andere Betriebssysteme. ImageMagick unterstützt über 200 Dateiformate und bearbeitet zuverlässig Bilder mit einer Auflösung im Giga- und Terapixelbereich.
Sie installieren die Programmsammlung über die Paketverwaltung der von Ihnen verwendeten Distribution. Zu Redaktionsschluss lieferte nur Arch Linux die aktuelle Version 7.1 aus, Debian 11 (auch Testing und “Sid”) sowie Fedora 37 enthielten noch Version 6.9. Auf Debian-basierten Systemen wie Ubuntu und Linux Mint nutzen Sie den Befehl aus der zweiten Zeile von Listing 1 zur Installation. Unter Fedora verwenden Sie das Kommando aus Zeile 4, auf Arch-basierten Systemen wie Manjaro richten Sie ImageMagick über den Befehl aus der letzten Zeile ein.
Listing 1
Installation
### Debian und Derivate $ sudo apt install imagemagick ### Fedora $ sudo dnf install imagemagick ### Arch Linux und Derivate $ sudo pacman -S imagemagick
Anschließend finden Sie auf dem Rechner die in der Tabelle “Übersicht der Werkzeuge” aufgeführten Kommandozeilenprogramme. Viele Anleitungen im Internet beziehen sich noch auf alte Befehle, in denen Anwender stets ein magick eingeben mussten, gefolgt von der Befehlskette. In den neueren Versionen fällt das weg, und aus magick convert wird ein schlichtes convert.
|
Befehl |
Funktion |
|---|---|
|
|
Hauptwerkzeug zum Konvertieren, Skalieren, Weichzeichnen, Schärfen, Beschneiden, Drehen und mehr. |
|
|
Wie |
|
|
Liest verschiedene Bildparameter inklusive der EXIF-Daten aus. |
|
|
Überlappt Bilder. |
|
|
Kombiniert mehrere Bilder zu einer Zieldatei. |
|
|
Markiert Unterschiede zwischen Bildern in der Zieldatei oder gibt sie als Werte aus. |
|
|
Kopiert Pixeldaten von einem Bild in ein anderes. |
|
|
Zeigt Bilder über einen X-Server als Popup an. |
|
|
Erstellt Bildschirmfotos im X-Server. |
|
|
Führt Skripte in der Magick Scripting Language aus. |
Alltägliche Befehle
Um ein Bild erst einmal genauer zu identifizieren, ohne es außerhalb des Terminals über den Dateimanager oder das Kommando display zu öffnen, verwenden Sie den Befehl identify Bilddatei. Der Output sieht dann beispielsweise aus wie in der zweiten Zeile von Listing 2. Möchten Sie die Ausgabe auf Höhe, Breite und Dateinamen beschränken, erweitern Sie den Befehl wie in Zeile 3 gezeigt. Dabei steht \n für einen Zeilenumbruch. Auf diese Weise befüllen Sie zum Beispiel Fotolisten für Verwaltungszwecke. Der Befehl aus der letzten Zeile hängt die Bilddaten an die Datei Ziel.txt an.
Listing 2
Bilddaten abrufen
$ identify bild.jpg bild.jpg JPEG 811x664 811x664+0+0 8-bit sRGB 62201B 0.000u 0:00.000 $ identify -format "%f Breite: %w Höhe: %h Format: %m \n" bild.jpg $ identify *.jpg >> <I>Ziel<I>.txt
Konvertieren und mehr
Beim Konvertieren der Bilder in ein anderes Dateiformat, beim Umbenennen oder Beschneiden und beim Verändern der Größe setzen Sie den vielseitigen Befehl Convert ein: convert Quelle Ziel. Er erzeugt stets eine neue Zieldatei, lässt also das Originalbild unangetastet. Das Gegenstück Mogrify verwendet eine nahezu identische Syntax, bearbeitet aber die Quelldatei direkt.
Bei Bedarf konvertieren Sie nicht nur von einem Dateiformat in ein anderes, sondern benennen gleichzeitig die Datei um. Mittels convert bild.jpg bild.png ändern Sie nur das Format. Möchten Sie lediglich den Dateinamen ersetzen, tippen Sie convert bild.jpg foto.jpg. Kombiniert lautet das Kommando beispielsweise convert bild.jpg foto.png.
Gegebenenfalls konvertieren Sie außerdem alle Dateien eines bestimmten Typs in einem Rutsch. Dabei stehen mehrere Varianten zur Auswahl. Das Kommando convert *.jpg *.png konvertiert alle JPEG-Dateien ins Zielformat PNG, allerdings ohne den Namen zu übernehmen: Die Zieldateien heißen dann *-1.png, *-2-png und so weiter. Über Terminalbefehle lässt sich das jedoch elegant korrigieren (Listing 3).
Listing 3
Massenumbenennen
$ for i in *.jpg; do \
convert "$i" "${i%.jpg}.png"; \
done
Möchten Sie Bilder drehen oder in der Größe verändern, erweist sich oft Mogrify als sinnvoll, da es die Quelldatei direkt umwandelt. Stehen etwa alle Bilder in einem Ordner hochkant, sollen aber horizontal angezeigt werden, drehen Sie alle auf einmal über den Befehl mogrify -rotate "90" *.png im Uhrzeigersinn oder mittels mogrify -rotate "-90" *.png andersherum. Zum Verkleinern der Bilder dienen Parameter wie -geometry 800x600 oder -resize 50%.
Thumbnails aller JPEGs in einem Ordner erzeugen Sie über einen Batch-Befehl wie den aus der ersten Zeile von Listing 4, der die Zieldateien als vorschau-1.jpg, vorschau-2.jpg und so weiter benennt. Wollen Sie den Dateinamen übernehmen und beispielsweise in einem separaten Ordner thumbs/ speichern, könnte der Befehl aussehen wie der in Zeile 2. Dazu müssen Sie allerdings vorher den Ordner thumbs/ anlegen. Möchten Sie nur die Maße einer Bildseite bearbeiten, geben Sie nach --resize statt 200x200 beispielsweise 200x oder x200 an. Verwenden Sie statt -rezize den Parameter -thumbnail, löscht Convert automatisch Kommentare und Farbprofile aus den Metadaten (Zeile 3).
Listing 4
Thumbnails erzeugen
$ convert *.jpg -resize 200x200 vorschau.jpg $ for i in *.jpg ; do convert "$i" -resize 200x200 "thumbs/$i"; done $ convert *.jpg -thumbnail 200x200 vorschau.jpg $ convert -delay 100 *.jpg animation.gif
Ähnlich wandeln Sie Bildstrecken in Animationen um: Um aus einer Reihe von JPEG-Dateien ein animiertes GIF zu erstellen, verwenden Sie das Kommando aus der letzten Zeile von Listing 4. Den Wert hinter -delay geben Sie in Hundertstelsekunden an. Er legt die Zeit zwischen den Bildwechseln fest. Geben Sie wie im Beispiel 100 an, erscheint jede Sekunde ein neues Bild.
Effekte und Kompression
Convert und Mogrify können jedoch noch weit mehr: Über sie integrieren Sie zusätzlich direkt Bildeffekte. Mittels -blur Radius wenden Sie einen Weichzeichner mit dem vorgegebenen Radius an (Abbildung 1). Soll Ihr Bild künstlerischer aussehen, sorgt beispielsweise -charcoal Faktor für einen Kohlestifteffekt (Abbildung 2). Mit -sketch Radius simulieren Sie stattdessen eine Buntstiftzeichnung (Abbildung 3).
Möchten Sie Ihre Bilder zwecks Speicherplatzoptimierung komprimieren, stehen über -compress Typ 25 Algorithmen zur Auswahl. Darunter finden sich Bzip, Fax, JPEG2000, Losless, WebP und viele andere.
Durch -contrast beziehungsweise +contrast erhöhen oder vermindern Sie den Kontrast des Zielbilds. Der Befehl -sharpen radius steigert die Schärfe: Ein guter Startwert ist beispielsweise 0x1. Hier verändern Sie den Wert auf beiden Seiten des x beliebig bis zum gewünschten Ergebnis. Um Ihr Bild in einem Rahmen einzufassen, erzeugen Sie über -border 1x1 -bordercolor 0xFF0000 einen roten Rahmen mit einem Pixel Dicke.
Copyright und Co.
Etwas mehr Komplexität kommt ins Spiel, sobald Sie über ImageMagicks Werkzeuge eigene Formen erstellen, Bilder mit einem Datum oder einem Bildnachweis markieren oder ein Wasserzeichen für eine Online-Vorschau hinzufügen.
Der Befehl aus Listing 5 ergänzt das Ausgangsbild durch einen Copyright-Schriftzug unten links (SouthWest – beachten Sie die Großschreibung bei den Himmelsrichtungen). Als Font kommt DejaVu Sans in 150 Pixel Größe in der Farbe Weiß zum Einsatz. Hinter -annotate lässt sich mittels der XY-Werte der Schriftzug bei Bedarf pixelbasiert verschieben, etwa +5+20. Im Beispiel verbleibt er an der Ursprungsposition (0). Die richtige Schreibweise der installierten Schriften liefert Ihnen der Befehl convert -list font.
Listing 5
Bilder beschriften
$ convert bild.jpg -gravity SouthWest -pointsize 150 -fill white \ -font DejaVu-Sans -annotate 0 '(c) FOTO VON XYZ / 2022' ziel.jpg
Um ein Wasserzeichen zu platzieren, überblenden Sie am besten mithilfe des ImageMagick-Programms Composite das Ausgangsbild mit einem vorhandenen Bild mit Alphakanal, also einem durchsichtigen Hintergrund (Abbildung 4). Der Wert hinter -watermark kann zwischen 0 (durchsichtig) und 100 (voll deckend) liegen. Die 50 im Beispiel aus Listing 6 bedeutet 50 Prozent Deckkraft. Der Befehl lässt sich wie alle anderen mit einem Sternchen anstatt des Dateinamens auf alle Dateien eines bestimmten Typs anwenden.
Listing 6
Wasserzeichen
$ composite -watermark 50 \ -gravity Center \ Wasserzeichen.png \ Quelle.jpg Ziel.jpg
Bilder zusammenführen
Über den Befehl montage führen Sie Bilder in einer Datei zusammen. Manche Fotografen nutzen solche Übersichtsbilder, um Ordnerinhalte auf den ersten Blick zu erfassen. Das kann vor allem in der Cloud sehr nützlich sein oder wenn die Bandbreite die individuelle Vorschau erschwert. Das Kommando aus Listing 7 speichert alle PNG-Dateien des aktuellen Ordners in der Größe 800 x 600 Pixel nebeneinander und mit Abstand zueinander in einem JPEG. Dabei steht jeweils der Dateiname unter dem Bild (Abbildung 5).
Listing 7
Montage
$ montage -label %f \ -geometry 800x600+10+10 \ *.png bildindex.jpg

Abbildung 5: Mit einer beschrifteten Übersicht in einem Bild sparen Sie beispielsweise in Clouds Datenvolumen.
Fazit
Die in diesem Beitrag genannten Funktionen kratzen nur an der Oberfläche der Fähigkeiten von ImageMagick. Das Programm hat noch viel mehr zu bieten, das Wissen dazu füllt Bücher. Möchten Sie sich weiter mit dem umfangreichen Werkzeug beschäftigen, eignen sich einerseits die Projekt-Homepage und andererseits die Manpages der einzelnen Tools als Anlaufstelle. In LinuxUser 08/2022 findet sich zudem ein praktischer Beitrag zum Thema Zeichnen mit ImageMagick [2].
Sie sollten beim Arbeiten mit der Grafik-Toolbox stets im Hinterkopf behalten, dass ein neues Werkzeug zu erlernen immer seine Zeit dauert. Selbst, wenn Sie es nie ganz meistern oder zu aufwendigen Bildkompositionen nutzen, ist ImageMagick doch im Alltag über die Batch-Optionen ein handliches Allround-Werkzeug für das Konvertieren von Formaten, einfache Größenänderungen oder das Einbinden von Wasserzeichen. (csi/jlu)
Der Autor
Claudius Grieger hat ImageMagick aus Zufall im Terminal entdeckt und nutzt es seither auf seinem Debian-System zur Batch-Konvertierung von Grafiken und Fotos.
Infos
-
ImageMagick: https://imagemagick.org
-
Zeichnen mit ImageMagick: Ralf Kirschner, “Silhouette”, LU 08/2022, S. 86, https://www.linux-community.de/47914









