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

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

Gimp 2.10.18: Vorher/nachher

Originalfoto (links) von Unsplash (Matheus Ferrero). Rechts die im Gimp 2.10.18 editierte Version.

Das obige Foto (links) habe ich mir mal von Unsplash heruntergeladen und es anschließend zuerst im Gimp 2.10.18 und dann mittels eine Shell-Skripts von Fred Weinhaus noch im – imho sehr unterschätzten – ImageMagick bearbeitet.

Weiterführender Link: Seht auch meinen Beitrag „Chroma-Keying: Vorläufiges Fazit“.

Mißverständnis

Auf der Website von Chip.de wird unter anderem die Windows-Version von ImageMagick 7.0.10-20 zum Downloaden angeboten. Dann aber werden als Alternativen zu ImageMagick unter anderem der Gimp und Photoshop angeführt. Das beruht meiner Ansicht nach allerdings auf einem Mißverständnis: ImageMagick ist eben kein Bitmap-Editor im herkömmlichen Sinne, sondern eine Suite von Modulen zur teilweise hochkomplexen Modifizierung und Erstellung von Grafiken. Darüber hinaus lassen sich alle Funktionen mittels Scripts (Shell-Scripts oder BAT-Dateien) automatisieren.

Ein Beispiel:

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

Dieses Script verkleinert alle JPGs in einem gegebenen Verzeichnis bei einer Qualität von 90 auf eine Breite von 550 Pixeln. (Anm.: In ImageMagick 7.x convert durch das neue magick ersetzen.)

Und: Als „Nachteil“ wertet die Chip-Redaktion, daß viele Funktionen lediglich über Shell zur Verfügung stehen. Das ist imho aber gerade die Stärke von ImageMagick. Das GUI (Graphical User Interface; grafische Benutzeroberfläche) von ImageMagick (aufzurufen durch die Eingabe von display ohne Argumente) unterstützt nur sehr, sehr rudimentäre Funktionen.

ImageMagick unter Windows

Weiter in der Lektüre von „Converting Scripts: UNIX Shell to Window DOS“ auf der ImageMagick-Website. Das ist wirklich interessant. Autor dieses Textes ist diesmal nicht Anthony Thyssen, der das Gros der ImageMagick-Dokumentation geschrieben hat, sondern Wolfgang Hugemann.

Ein Beispiel von der ImageMagick-Website:

Folgendes Shell-Script

#!/bin/sh
  # Create a negated rose image and overlay a comment
  magick -background none -fill red -gravity center \
          -font Candice -size 140x92 caption:'A Rose by any Name' \
          \( rose: -negate -resize 200% \) +swap -composite \
          output.gif

wird unter Window zu folgender BAT-Datei:

@ECHO OFF
  :: Create a negated rose image and overlay a comment
  magick -background none -fill red -gravity center  ^
          -font "C:\path\to the\font\candice.ttf"  ^
          -size 140x92   caption:"A Rose by any Name"  ^
          ( rose: -negate -resize 200%% ) +swap -composite  ^
          C:\where\to\save\output.gif

Code mit freundlicher Genehmigung von Wolfgang Hugemann.