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: 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.

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“.

Image Magick: „Anatomy of the Command-line“

Die Sammlung von Grafik-Tools ImageMagick wird ja hauptsächlich über eine Shell (Textkonsole) aufgerufen. Mehr dazu findet ihr auf der Website von ImageMagick [englisch]. Ich persönlich finde ImageMagick schick – ganz im Gegenteil zur Chip.de-Redaktion, die eben genau die Tatsache moniert, daß ImageMagick hauptsächlich über eine Shell zu bedienen ist.

Taskleiste: Meine Grafikanwendungen

Screenshot: Die 15 Icons der von mir unter Ubuntu MATE 20.04 installierten Grafikanwendungen

Nach mittlerweile immerhin 25 Jahren Grafik habe ich aktuell die obigen Anwendungen installiert. Nicht dabei ist ImageMagick, das normalerweise aus einer Shell (Textkonsole) heraus aufgerufen wird.

Batch-Dateien für ImageMagick

Für mich schon selbstverständlich, poste ich bei Scripts zu ImageMagick in einer Linux-Shell ausführbare shell scripts, doch da gibt es ja auch Windows mit seinen Batch-Dateien. 😉 Zu diesem wie ich finde spannenden Thema habe ich auf der Website von ImageMagick einen längeren Text entdeckt: Wie konvertiere ich ein shell script in eine .bat-Datei?

Weiterführender Link: Mein Beitrag „Batch Magic“ .

PNG und JPG

PNG-Logo © Copyright 2020 by Greg Roelofs. Mit freundlicher Genehmigung.

Aus reiner Bequemlichkeit lade ich nicht nur Screenshots, sondern auch Fotos überwiegend als PNGs hier ins Blog hoch. Dabei sind PNG-Dateien teilweise im Vergleich zu JPGs bis zu zehnmal (!) größer. Umgekehrt erlebe ich – wenn auch nicht bei mir – den Fall, daß Bilder, die besser als indiziertes PNG abgespeichert würden, als JPGs zur Verfügung stehen – ergo viel zu groß sind. Dahinter steckt wohl, daß die Betreffenden nicht genügend über diese beiden Formate wissen. Während das Gros der verfügbaren Grafikprogramme lediglich die gebräuchlichen Standard-Features des PNG-Formats unterstützt, bietet beispielsweise ImageMagick die Option an, auf die fünf Kompressionsfilter von PNG (none, sub, up, average und paeth) zuzugreifen, was – je nach Bilddaten – die Dateigröße nochmal verkleinern kann.

Die Features beider Formate in kurzer Übersicht:

JPEG:

Eignet sich aufgrund der verlustbehafteten Kompression am besten für Fotos. Max. Farbtiefe: 24 bit, das sind etwas über 16,7 Millionen Farben. Als JPG abgespeicherte Bilder können auch – optional – progressiv aufgebaut werden – ein Feature, das aber eher früher Sinn machte, als man/frau noch mit 56k-Modems im Internet unterwegs war. „Progressiv“ bedeutet, daß zuerst eine niedrig-auflösende Version aufgebaut wird, bis das Bild vollständig geladen ist. In JPG-Dateien können auch Text-Kommentare wie Copyright-Vermerke oder auch verwendete Software abgespeichert werden. Ebenfalls unterstützt wird das sogenannte sub-sampling, bei dem das Bild in Blöcke zu je vier Pixeln aufgeteilt wird. Bei einem sub-sampling von 4:4:4 wird die gesamte Bildinformation gespeichert, bei 4:2:2 und 4:1:1 wird, soviel ich weiß, die Helligkeitskomponente voll abgespeichert, während für die Farbinfomationen für jeden Viererblock ein Durchschnittswert gebildet wird.

PNG:

PNG (Portable Network Graphics; gesprochen: ping) unterstützt max. 64 bit – d. h. insgesamt 18,45 Trillionen (!) Farben – RGBA, was auf normalen Monitoren gar nicht mehr darstellbar ist, und eignet sich eher für Bilder mit größeren Farbflächen, z. B. Screenshots oder Logos. Die Kompression erfolgt verlustfrei mit einem LZ77-Algorithmus. Wie weiter oben bereits erwähnt, sind in PNG darüber hinaus fünf Kompressionsfilter implementiert. Ein Feature von PNG ist die Transparenz, wobei im Gegensatz zu GIF bei indizierten PNGs 256 Transparenzstufen unterstützt werden, während bei GIF ein Pixel entweder nur transparent oder nur deckend sein kann. Indizierte PNGs mit Farbpalette können besser als vergleichbare GIFs komprimieren; die Farbtiefe reicht hier von 256 Farben auf der einen bis zu zwei Farben auf der anderen Seite. Bei nicht-indizierten PNGs wird ein bis zu 16-bit großer Alpha-Kanal unterstützt.

Weiterführender Link:

Eine ausführliche Geschichte von PNG (englisch), zu finden auf der PNG Homepage.