Schick: ImageMagick

Das ImageMagick-Logo. Lizenz: ImageMagick License.

ImageMagick ist eine Grafik-Suite bestehend aus einer Reihe von Tools, um Grafiken und Fotos zu erzeugen, zu bearbeiten und zu konvertieren. Das Besondere: ImageMagick wird in der Regel aus einer Shell (Textkonsole) heraus aufgerufen. Mit den Tools von ImageMagick steht einem eine Überfülle an Möglichkeiten zur Verfügung, angefangen vom relativ simplen Konvertieren von Grafiken von einem Format in ein anderes bis hin zu komplexen Operationen mittels Shell-Script.

Ein einfaches Beispiel für Linux:

#!/bin/bash
for file in *.jpg
do convert $file -resize 625 -quality 90 resized-$file
done

Eine kurze Erklärung:

Hier werden alle JPGs in einem gegebenen Verzeichnis auf eine Breite von 625 Pixeln herunterskaliert.

Dann ist es – um nur ein weiteres Beispiel zu nehmen – möglich, komplexe Gradienten (Farbverläufe) wie etwa den folgenden zu erzeugen. Das ist etwa im Gimp schwieriger zu machen.

Komplexer, mit ImageMagick erzeugter Farbverlauf.

ImageMagick: Philosophie

Das ImageMagick-Logo. Lizenz: ImageMagick License.

ImageMagick wird ja üblicherweise aus einer Shell heraus aufgerufen – ein Konzept, mit dem die Redaktion von Chip.de offensichtlich so ihre Schwierigkeiten hat:

Screenshot © Copyright 2020 by CHIP Digital GmbH.

Ich frage mich u. a., was das „spezielle Features“ bedeuten soll, können doch die meisten Features von ImageMagick nur über eine Shell ausgeführt werden. Und: Wieso soll das bitteschön ein Nachteil sein? Dieses Konzept ist einfach Teil der Philosophie von ImageMagick. Ich frage mich sowieso, weshalb ImageMagick überhaupt eine – sehr eingeschränkte – Version mit GUI zur Verfügung stellt.

Die Chip.de-Redaktion schreibt weiter:

„ImageMagick selbst liefert die Benutzeroberfläche für die wichtigsten Basis-Funktionen. So kommen auch Laien mit der Software klar.“

Ähem, sorry, aber meinem Dafürhalten nach ist ImageMagick eben nicht für Laien gedacht. My!

Nochmal: Scripts für ImageMagick

Das ImageMagick-Script „accentedges“: vorher (oben) und nachher (unten). Foto von mir.

Auf der Website von Fred Weinhaus findet der/die Interessierte über 300 Scripts für ImageMagick. Diese Scripts sind allerdings nur für Linux geschrieben. (Über ein Beispiel habe ich ja schon berichtet.) Die Scriptfähigkeit von ImageMagick, das ja – auch unter Windows – aus einer Shell (Textkonsole) heraus aufgerufen wird, führt das Statement der Chip.de-Redaktion ad absurdum, es sei ein Nachteil, daß viele Features nur über die Kommandozeile – eben besagt Shell – aufgerufen werden können. Offenbar tut man sich bei Chip.de mit Programmen, die kein GUI1 haben, schwer.

1 Es gibt auch bei ImageMagick die Möglichkeit, über den Befehl display eine GUI-Version aufzurufen, die aber nur einen sehr, sehr eingeschränkten Befehlssatz bereitstellt.

ImageMagick mit GUI

ImageMagick: Script „accentedges“

Noch ein ImageMagick-Script von Fred Weinhaus: das Script „accentedges“, das, wie das untenstehende Beispiel zeigt, unaufdringliche Verbesserungen von Fotos erlaubt.

Ein Beispiel:

Beispiel: Vor der Bearbeitung mittels Script (oben) und danach (unten). © Copyright 2021 by Claus Cyrny. Alle Rechte vorbehalten.

Ich habe hier die Standard-Parameter (-w 1 -s 20) benutzt. Erhöht man/frau die Parameter jedoch weiter (-w 2 -s 45), sieht das Foto auf einmal komisch aus; der Effekt ist nun ganz offensichtlich.

© Copyright 2021 by Claus Cyrny. Alle Rechte vorbehalten.

Ok, das geht aber auch im Gimp. Vorgehensweise: Die unterste Ebene mit dem Foto duplizieren, auf diese zweite Ebene Filter > Kanten finden > Kanten... anwenden (Standardeinstellungen), dann mit Farben > Entsättigen > Grau einfärben... diese zweite Ebene in Graustufen umwandeln, Farben > Invertieren und schließlich – wir sind immer noch bei der zweiten Ebene – den Ebenen-Modus Multiplizieren anwenden. That ’s it!

P. S.: Denkbar wäre etwa ein Script-Fu für den Gimp, das die ganzen Arbeitsschritte automatisiert.

Schlaflos in Ludwigsburg (34)

Es ist genau 00:00 Uhr, und ich bin schon wieder wach. Habe mir den obligatorischen Milchkaffee gemacht und überlege, was ich jetzt schreiben kann. Kann die Grafik-Suite ImageMagick wirklich nur empfehlen, kann man damit doch schicke Sachen machen. Wenn Chip.de schreibt

„Speziellere Bearbeitungs-Features stehen nur als Kommandozeilentools zur Verfügung und sind deshalb etwas komplizierter zu bedienen.“–Chip.de

so kann ich nur konstatieren, daß man in der – GUI-fixierten? – Chip.de-Redaktion die Philosophie von ImageMagick überhaupt nicht verstanden hat, ist das Aufrufen via Kommandozeile dort doch Standard. Die rudimentäre GUI-Version unterstützt wirklich nur ein paar Features. Und: ImageMagick unterstützt über 100 Dateiformate. Das ist aber nur die sprichwörtliche Spitze des Eisbergs. Für die Nutzung von ImageMagick seht bitte hier.

Habe mal irgendwo gelesen, daß man Verlinkung wie „hier“ nicht machen sollte, aber wieso eigentlich nicht?

À propos ImageMagick: Ganz unten auf der IM-Site hat es einen Link zum PGP-Schlüssel von ImageMagick. Habe selbst schon mehrere Anläufe gemacht, PGP zu installieren, war aber irgendwie zu bequem dazu, mich da einzuarbeiten. Hmm, vielleicht kommt das ja noch. Expression Engine dto. Ich habe mir dieses CMS mal vor ca. einem Jahr oder so lokal installiert, dann aber nichts mehr damit gemacht. Vielleicht sollte ich meine Django-Reinhardt-Site unter WordPress neu aufsetzen, ist sie im Augenblick doch nicht responsiv.

CinePaint: Benutze dieses Programm, das ja eigentlich zur Bearbeitung von Film konzipiert ist, in der (veralteten) Version 1.0-4, nachdem ich es mit Mühe geschafft hatte, die Linux-Version zu installieren. Habe kurze Zeit sogar bei CinePaint mitgearbeitet, bin dann aber mangels Feedback zu meinen Anstrengungen wieder ausgestiegen. Ich war für „Grafik“ und „Dokumentation“ zuständig. Aktuell gibt es eine Windows-Version von CinePaint 1.4.5 bei SourceForge zum Herunterladen.

Mache inzwischen seit 1996 Grafik, seit ich über Zeitarbeit ein Jahr bei debis Systemhaus in Fellbach bei Stuttgart gearbeitet habe. Damals habe ich noch Visio (Vektorgrafik), Micrografx Designer (Vektorgrafik) sowie Paint Shop Pro (Bildbearbeitung und Konvertierung; damals noch von JASC1) benutzt. Paint Shop Pro heißt inzwischen PaintShop® Pro und ist von Corel aufgekauft worden.

1 Just Another Software Company.

ImageMagick: Scans optimieren

Scan vor der Bearbeitung mit ImageMagick (links) und nachher (rechts)

Ich habe ein paar Scans, die teilweise starke Farbstiche aufweisen. Diese können mit dem Gimp nur sehr unvollkommen beseitigt werden. Als Lösung bietet sich ImageMagick an. Mit magick lassen sich die Farbstiche beinahe vollständig entfernen. Den Rest kann man/frau dann mit dem Gimp erledigen.

Der Befehl unter Linux:

$ magick [Ausgangsbild] \( +clone -blur 0x20 \) \
-compose Divide_Src -composite  [Ergebnis]

Voilà!

Weiterführender Link: ImageMagick v6 Examples — Compositing Images

Scripts für ImageMagick

Auf der Website von Fred Weinhaus hat es, wenn ich richtig gezählt habe, 366 (!) Scripts für ImageMagick. Nachdem ich bereits mehrere dieser kostenlosen Scripts benutzt habe, dachte ich, ich poste hier mal den Link. Diese Scripts laufen nur unter Linux; für die Benutzung unter Windows müssen sie entsprechend angepaßt werden. Für ein Beispiel seht bitte diesen Beitrag.

ImageMagick: Bilder mit Rand

In ImageMagick 7 gerenderte Grafik mit Rand

Die obige Grafik ist nur ein Beispiel für die vielfältigen Möglichkeiten von ImageMagick. Soweit ich das einschätzen kann, kann man/frau da noch ganz andere (und viel komplexere) Sachen machen. Mittels compose ist es beispielsweise möglich, den obigen Rand in ein vorhandenes Bild – etwa ein Foto – einzufügen. Mehr zu compose -in der Version 7 magick compose – erfahrt ihr hier. Und für einen deutlich komplizierteren Einstieg ins Thema „Compositing“ seht bitte bei W3C.

Und: Der Rand ist nicht etwa nur ein punktförmiges Rauschen, sondern ein Muster:

Der Rand in der Vergrößerung.

Hier der Code, um den obigen Rand zu erzeugen:

convert -size 625×625 xc: -virtual-pixel black -spread 25 ergebnis.png

convert ist noch der Befehl für ImageMagick 6; in der Version 7 wird dieser durch magick ersetzt. convert funktioniert aber auch noch.

Das obige Codebeispiel könnt ihr natürlich nach Gutdünken modifizieren, indem ihr die verschiedenen Parameter anpaßt. 625x625 sind die Maße des Bildes; black die Farbe des Randes und 25 dessen Breite. Gefunden habe ich den Code hier.

Und – für diejenigen, die sich mit dem Code schwer tun: Es gibt auch eine ImageMagick-Version mit grafischer Oberfläche (GUI), die die wichtigsten Features von ImageMagick unterstützt:

ImageMagick mit grafischer Oberfläche

Aufgerufen wird die grafische Oberfläche aus einer Textkonsole (Shell) heraus über display. Daraufhin erscheint das Logo von ImageMagick mit dem Zauberer. Wenn ihr in dieses Logo klickt, erscheint die grafische Oberfläche, etwas so:

Durch Links-Klicken erscheint die grafische Oberfläche von ImageMagick.

Die diversen Feature sind für jemanden, der sich mit Grafik auskennt, eigentlich selbsterklärend. Für Anfänger dagegen ist ImageMagick meiner Ansicht nach aber eher nicht geeignet.

Weiterführender Link: „Fred’s ImageMagick Scripts“.

ImageMagick: Chroma Key Masking

Wenn man/frau etwa in einem Foto ein T-Shirt anders einfärben will, geht das nicht nur mittels Freistellen oder Selektieren nach Farbe. (Eine weitere Option wäre Farben drehen.) Nein, ImageMagick bietet die Möglichkeit des Ausmaskierens via Chroma Key (seht folgenden Artikel). Ok, da ist wieder Code im Spiel, der aber verhältnismäßig einfach ist (lies: nur ein paar Zeilen).

ImageMagick 7: Eine Sinuskurve rendern

In ImageMagick 7 gerenderte Sinuskurve. © Copyright 2021 by Claus Cyrny. Alle Rechte vorbehalten.

Im Zuge meines Beitrags „Über Kreativität“ mußte ich ja eine Sinuskurve zeichnen, was ich auch so einigermaßen hinbekommen habe. Ich habe mich da aber gefragt, ob man/frau das nicht auch mittels ImageMagick machen könnte. Wie ihr seht, geht das definitiv, auch wenn ich das nicht allein geschafft habe; jemand in einem Forum bei GitHub hat mir geholfen.

Hier jedenfalls das Script für Linux:

#!/bin/sh

magick \
-size 2400×1 gradient:Black-White \
-evaluate Sin 2 \
-scale „2400×2400!“ \
-size 2400×2400 gradient: \
-compose MinusDst -composite \
-fill „#fff“ +opaque „#000“ \
-morphology edgeout diamond:1 \
-morphology dilate plus:8 \
-fill Red -opaque White \
-fill White -opaque Black \
-colorspace RGB \
-resize 25% \
-colorspace sRGB \
x2.png

Und so müßte dasselbe Script als BAT-Datei für Windows aussehen:

@ECHO OFF

magick ^
-size 2400×1 gradient:Black-White ^
-evaluate Sin 2 ^
-scale „2400×2400!“ ^
-size 2400×2400 gradient: ^
-compose MinusDst -composite ^
-fill „#fff“ +opaque #000 ^
-morphology edgeout diamond:1 ^
-morphology dilate plus:8 ^
-fill Red -opaque White ^
-fill White -opaque Black ^
-colorspace RGB ^
-resize 25%% ^
-colorspace sRGB ^
x2.png

x2.png ist dabei die Grafik mit der Sinuskurve, die – wie man/frau sehen kann – oben und unten leider etwas abgeschnitten ist. Ich werden hier aber noch den optimierten Code posten.

Und so sieht die korrekte Kurve dann aus. (Ich habe das jetzt im Gimp editiert.)

In ImageMagick 7 gerenderte Sinuskurve. © Copyright 2021 by Claus Cyrny. Alle Rechte vorbehalten.

Wie man/frau sieht, kann man/frau mittels ImageMagick total schicke Sachen machen. Leider hat sich dieses Programm aber außerhalb von Grafikkreisen ob seiner komplexen Handhabung nicht so richtig durchsetzen können. ImageMagick gibt es zwar mit grafischer Oberfläche (GUI); diese Version unterstützt aber nur sehr rudimentäre Funktionen. Codebeispiele finden trotzdem Interessierte auf der ImageMagick-Homepage.

P. S.: Hier wie versprochen der korrekte Code des obigen Scripts:

#!/bin/sh

magick \
-size 2400×1 gradient:Black-White \
-evaluate Sin 2 -evaluate Multiply 0.98 -evaluate Add 1% \
-scale „2400×2400!“ \
-size 2400×2400 gradient: \
-compose MinusDst -composite \
-fill „#fff“ +opaque „#000“ \
-morphology edgeout diamond:1 \
-morphology dilate plus:8 \
-fill Red -opaque White \
-fill White -opaque Black \
-colorspace RGB \
-resize 25% \
-colorspace sRGB \
x2.png

Und als BAT-Datei müßte das etwa wie folgt aussehen:

@ECHO OFF

magick ^
-size 2400×1 gradient:Black-White ^
-evaluate Sin 2 -evaluate Multiply 0.98 -evaluate Add 1% ^
-scale „2400×2400!“ ^
-size 2400×2400 gradient: ^
-compose MinusDst -composite ^
-fill #fff +opaque #000 ^
-morphology edgeout diamond:1 ^
-morphology dilate plus:8 ^
-fill Red -opaque White ^
-fill White -opaque Black ^
-colorspace RGB ^
-resize 25%% ^
-colorspace sRGB ^
x2.png

User snibgo von GitHub hat mir gerade noch eine optimierte Version zugemailt; zuerst mal als Windows-BAT-Datei:

@ECHO OFF

magick ^
-size 2400×1 gradient:Black-White ^
-evaluate Sin 2 ^
+write x.png ^
-scale „2400×2400^!“ ^
-size 2400×2400 gradient: ^
-compose MinusDst -composite ^
-fill #fff +opaque #000 ^
-morphology edgeout diamond:1 ^
-size 2400×8 xc:Black +swap -append ^
-size 2400×8 xc:Black -append +repage ^
-morphology dilate plus:8 ^
-fill Red -opaque White ^
-fill Blue -opaque Black ^
-colorspace RGB ^
-resize 25%% ^
-colorspace sRGB ^
x2.png

Weiterführende Links: Meine Beiträge „ImageMagick: Scans optimieren“ mit einem relativ einfachen Codebeispiel sowie „ImageMagick unter Windows“.