Bilder mit ImageMagick auf der Kommandozeile bearbeiten

Vor etwa 30 Jahren wurde das Projekt ImageMagick gestartet. Es handelt sich dabei um eine freie Software, die Bilder per Kommandozeile bearbeiten kann. Die Funktionen reichen vom Zusammenfügen mehrerer Bilder über das Hinzufügen und Erzeugen von einfachen Formen, Schrift, Verzerrungen, Größenveränderung und Drehen der Bilder bis hin zu Filterfunktionen wie Unschärfe, Kontrastanpassung oder Invertierung. Die Software umfasst mehrere Dienstprogramme für die Kommandozeile sowie eine für viele Programmiersprachen verfügbare Programmbibliothek, um die verfügbaren Funktionen direkt in einem Programm zu verwenden. Es eignet sich daher besonders zur Stapelbearbeitung von Bildern.

Dienstprogramme

  • convert kann Dateiformate konvertieren, skalieren, weichzeichnen, beschneiden, entrauschen, dithern, drehen, spiegeln und vieles mehr.
  • identify gibt eine Beschreibung des Formats und der Charakteristika einer oder mehrerer Grafikdateien aus.
  • mogrify bietet dieselben Funktionen wie convert, wobei es im Unterschied zu diesem die Ursprungsdateien mit dem Ergebnis überschreibt und nicht in eine neue Datei schreibt.
  • composite überlappt zwei Bilder.
  • montage setzt mehrere Bilder zu einem zusammen.
  • compare zeigt die Unterschiede zwischen zwei Grafiken an.
  • stream kopiert einzelne oder mehrere Pixel-Komponenten eines Bildes in ein anderes Format.
  • display zeigt ein Bild oder eine Bildersequenz über einen X-Server auf dem Bildschirm an.
  • import erstellt Bildschirmfotos.
  • conjure interpretiert Skripts in der Magick Scripting Language (MSL) und führt sie aus.

Hier im Artikel zeige ich Beispiele für convert, den wohl wichtigstem Befehl und composite für das Wasserzeichenbeispiel.

Beispiele nachvollziehen

Du benötigst eine Installation vom ImageMagick. Du kannst dir das Programm auf deinem lokalen Rechner oder du benutzt einfach die Kommandozeile deines Webhosting bei uns. Dort ist ImageMagick bereits installiert. Unter macOS geht das im Terminal Fenster, unter Windows mit Software wie Putty.
Mit dem Befehl

ssh [ftpUserName]@[ftp-host]

und anschliessender Passworteingabe (ebenfalls FTP Passwort) kannst du dich anmelden.

Terminalfenster in macOS

Du kannst dich ganz normal durch die Verzeichnisse bewegen (cd) und in ein Verzeichnis gehen, das Bilder enthält. Zum Testen kannst du auch ein Verzeichnis ablegen.

Verzeichnis für Bilder

Wenn du es innerhalb des öffentlichen Bereichs anlegst, kannst mit dem Browser die Ergebnisse überprüfen. Dort siehst du auch die erheblichen Unterschiede in der Dateigrösse.

Convert

Als Beispiel habe ich ein grosses Bild von einem See in Neuseeland, das unter einer Creative Commons Lizenz steht (CC BY-SA 2.0) von Isabell Schulz. Das Orginalbild ist 5472 x 3648 Pixel und 5.1 Megabyte, bzw 5,100 Kilobyte gross.

Skalieren

Mi dem -resize Parameter lassen sich Bilder skalieren hier auf eine Höhe und Breite von jeweils 800 Pixel. Hochformatige Bilder haben dann 800 Pixel Höhe und Querformatige Bilder haben 800 Pixel Breite, immer bei Beibehaltung der Seitenverhältnisse des Orginalbildes (5472 x 3648 px)

convert lake.jpg -resize 800x800 resize_800_lake.jpg
resize_800_lake.jpg 196k

Die Anzahl der Pixel kann auch prozentual verändert werden, hier um 50%.

convert lake.jpg 50% lake_50_prozent.jpg

Um ein Bild unabhängig der Seitenverhältnisse auf eine ganz bestimmte Pixelgröße zu zwingen, muss ein Ausrufezeichen hinter der Größenangabe geschrieben werden. Der Bildinhalt wird dabei gestretched

convert lake.jpg -resize 1280x400! resizeforce_1280x400_lake.jpg
resize force_1280x400_lake.jpg 196k

Bilder beschneiden

Die Option hinter -crop gibt an, was aus dem Bild ausgeschnitten werden soll. 1280×400+200+2700 bedeutet von Links oben 200 Pixel nach rechts und 300 Pixel nach unten, dann einen Bereich von 500×500 ausschneiden. Mit der Option +repage werden die „canvas und offset“ Werte entfernt.

convert lake.jpg -crop 1280x400+200+2700 +repage crop_lake.jpg
crop_lake.jpg 120k

Nun ist das mit der genauen Positionierung immer so eine Sache, daher gibt es den Parameter -gravity. Der Parameter -list erzeugt eine Liste der Möglichkeiten.

convert -list gravity 
None
Center
East
Forget
NorthEast
North
NorthWest
SouthEast
South
SouthWest
West

Hier ein Beispiel mit der Gravity im Zentrum des Bildes. Das Bild soll auf 15% der Grösse beschnitten werden

convert lake.jpg  -gravity Center -crop 15%x+0+0  +repage gravity_lake.jpg
gravity_lake.jpg 120k

Beschneiden und skalieren

convert lake.jpg -resize 1280x1280 -gravity Center -crop 1280x400+0+0  +repage header_lake.jpg
header_lake.jpg 184k

Format umwandeln

In ein anderes Format umwandeln geht ganz einfach:

convert lake.jpg lake.png

Bilder drehen

Gedreht werden Bilder mit -rotate. Dabei entsteht ein Hintergrund, der mit einer Farbe gefüllt werden kann -background.

convert resize_800_lake.jpg -background orange -rotate 33 33lake.jpg

Wasserzeichen

Du brauchst eine Logo Datei und ein Bild. Ich nehme beispielsweise das Novatrend Logo und setze es in die 800px Variante des Sees nach rechts oben (northeast).

convert resize_800_lake.jpg novatrend.png -gravity northeast -geometry +10+10 -composite lake_novatrend.jpg
lake_novatrend.jpg 177k

Weitere Möglichkeiten

Die obigen Beispiele waren wirklich nur eine kleine Auswahl der Möglichkeiten von ImageMagick. Auf dem Screenshot siehst du alle Parameter, die du für die Befehle convert und mogrify nutzen kannst. Die ausführliche Dokumentation dazu findest du hier http://www.imagemagick.org/script/command-line-options.php.

http://www.imagemagick.org/script/command-line-options.php.

Batchbearbeitung

Richtig interessant wird die Arbeit mit ImageMagick, wenn du es von Programmiersprachen aus benutzt. Dann kannst du beispielsweise alle Bilder in einem Verzeichnis bearbeiten. Für PHP gibt es beispielsweise eine ausführliche Dokumentation mit Beispielen auf http://php.net/manual/de/book.imagick.php.

http://php.net/manual/de/book.imagick.php

Anwendungen in CMS

Es gibt Plugins für WordPress, die ImageMagick nutzen um Bilder zu optimieren, beispielsweise ImageMagick Engine, ImageMagick Sharpen Resized Images und EWWW Image Optimizer. Für Drupal steht das Modul ImageMagick zur Verfügung. Für andere CMS gibt es oft eine Auswahlmöglichkeit innerhalb einer Erweiterung, ob die Bilder mit PHP GD oder ImageMagick bearbeitet werden sollen. Die Bearbeitung mit ImageMagick ist qualitativ besser.

Fazit

Wenn es um automatisierte Bildbearbeitung geht, so ist ImageMagick seit 30 Jahren ein wirklich gutes Tool. Da sich die grundsätzlichen Befehle seit dieser Zeit nicht sehr verändert haben, gibt es auch viele Tutorials im Netz, die noch immer aktuell sind.


tl;dr: Du kannst Bilder auf der Kommandozeile bearbeiten!

Autor: hagengraf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

3 Gedanken zu „Bilder mit ImageMagick auf der Kommandozeile bearbeiten“

  1. Imagemagick ist zwar sehr gewöhnungsbedürftig, aber unschlagbar, wenn es um die Batch-Bearbeitung geht. Eine kniffelige Angelegenheit stelle ich mal als Frage. Der folgende Befehl passt die Größe der Wasserzeichengrafik auf die halbe Höhe der zu wasserzeichnenden Datei an und legt sie zentriert über das Bild:
    convert bild.jpg wasserzeichen.png -resize x%[fx:u[0].h/2] -gravity center -composite mit-wasserzeichen.jpg
    Gibt es eine Möglichkeit, den Befehl so anzupassen, dass das Wasserzeichen abhängig von der kleinsten Bildseite eingepasst wird, so dass der Befehl für Hochkant- und Querformat-Bilder gleichermaßen funktioniert? Oder muss man da eine Abfrage machen vorher à la wenn Höhe größer Breite, dann x%[fx:u[0].w/2] statt x%[fx:u[0].h/2] ?
    Im Fall wäre der Befehl zum Beispiel ideal nutzbar, um alle Bilder, die in hoher Auflösung auf dem Server liegen nachträglich mit Wasserzeichen zu versehen ( bei einer WordPress-Installation müsste man dann nur die von WordPress generierten Bilder von dem Befehl ausschließen).

Kommentar verfassen