Blender 2.83: Gamma-Korrektur

Beim Rendern der letzten Animation, über die ich berichtet habe, ist mir ein Fehler unterlaufen: Aus irgendeinem Grund habe ich statt eines Gammas von 1,0 eines von 2,2 angegeben. Ergebnis: Die fertige Animation ist viel zu hell. Nun muß ich bei 120 Frames das Gamma korrigieren, was mit ImageMagick aber kein Problem ist. Ich brauche nur ein kleines Shell-Script mit folgendem Inhalt:

#!/bin/bash
for file in *.png
do magick $file -gamma 0.45455 corr-$file
done

Das Script sucht sich alle PNGs im Verzeichnis heraus und korrigiert bei jedem Frame – es sind 120 – das Gamma. Der Korrekturwert 0.45455 ist der Reziprokwert von 2,2 (1/2,2). Dabei darauf achten, daß das Dezimalkomma im Englischen ein Punkt ist.

Frame vor und nach der Gamma-Korrektur

ImageMagick: Philosophie

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!

Workflow 16-bit

Inkscape kann an sich nur PNGs in 8-bit Farbtiefe pro Kanal exportieren. Das kann man /frau aber umgehen, indem man/frau die SVGs mittels ImageMagick in PNGs mit 16-bit Farbtiefe pro Kanal konvertiert.

Ein Beispiel:

$ magick -depth 16 {Ausgangsbild}.svg {Ergebnis}.png

Diese PNGs können dann anschließend in 16-bit in CinePaint weiterbearbeitet werden (seht hierzu auch das folgende Schema):

Workflow 16-bit mit CinePaint, Inkscape und ImageMagick

Denkbar ist ggf. auch ein Compositing von Grafiken aus CinePaint und Inkscape mittels ImageMagick.

PDFs

Im Zuge der Erstellung des Profils meiner Fähigkeiten, das ich aus Platzgründen auf vier PDFs verteilen muß, habe ich mich etwas mit dem PDF-Format beschäftigt. LibreOffice Draw etwa importiert PDFs, die aber ganz komisch dargestellt werden. Ich kann Draw deshalb nur in Ausnahmefällen empfehlen. Um nicht in Lucidchart alles nochmal editieren zu müssen, habe ich einfach mittels ImageMagick ein PNG in ein PDF konvertiert. Das geht mit nur einer Befehlszeile (und genauso schnell wenn nicht schneller als mit LibreOffice):

$ magick -density 300 Profil_Sonstige.png Profil_Sonstige.pdf

Dabei gibt der Parameter -density die Auflösung in dpi – hier: 300 – an.

ImageMagick: Komplexer Farbverlauf

ImageMagick hat gegenüber einem Bitmap-Editor wie Photoshop oder dem Gimp den Vorteil, dass man/frau da teilweise sehr komplexe Farbverläufe generieren kann.

Ein Beispiel:

Komplexer, mit ImageMagick 6.x generierter Fabverlauf

Und die Ausgangsgrafik:

Ausgangsgrafik für den obigen Verlauf

Schon so etwas z. B. im Gimp hinzubekommen, ist nicht ganz so einfach. In ImageMagick genügen da drei Befehlszeilen wie etwa

magick -size 625x625 xc:none +antialias -fill none -strokewidth 2.5 \ -stroke Gold -draw "path 'M 128,432 A 1,1 0 0,1 500,308'" \ sparse_alpha-1.png

So etwas in Inkscape nachzuzeichnen, ist dagegen nicht schwer.

In Inkscape gezeichnete Vorlage für einen in ImageMagick zu generierenden Verlauf

Weiterführender Link: Das betreffende Beispiel – ok, fast – auf der ImageMagick-Website.

04:48 Uhr

Schlage mich gerade mit folgendem Problem in ImageMagick herum und hoffe, das doch bald lösen zu können. Bin froh, dass ich die Besprechung von Greg Roelofs‘ Buch abgeschlossen habe. Ich kann dieses Buch auch nach 21 Jahren wirklich nur empfehlen. Dann habe ich erfahren, dass ImageMagick eine Security Policy hat – wieder etwas, mit dem ich mich auseinandersetzen darf. Nach dem zweiten Milchkaffee heute morgen überlege ich, wie ich jetzt weiter vorgehe.

Während meiner Beschäftigung mit ImageMagick fällt mir auch immer wieder das ein, was die Chip.de-Redaktion über dieses Programm bzw. die im Funktionsumfang doch sehr reduzierte GUI-Version geschrieben hat. Offenbar besteht bei Chip.de kein Interesse daran, sich mit einer Shell und deren Möglichkeiten auseinanderzusetzen.

Lösung

Für mein Problem, daß im neu installierten ImageMagick der Befehl magick nicht funktioniert, hat mir ein User aus dem englischsprachigen Ubuntu-Forum die Lösung gepostet. Ich muß in $HOME/.profiles folgenden Code hinzufügen:

# set PATH so it includes user's custom ImageMagick bin if it
# exists
if [ -d "$HOME/Software/ImageMagick" ] ; then
    PATH="$HOME/Software/ImageMagick:$PATH"
fi

$HOME/Software/ImageMagick ist hier das Verzeichnis, in dem ich magick abgespeichert habe. Andere Benutzer müssen das eben entsprechend anpassen. That’s it! 😉

‚magick‘ funktioniert immer noch nicht richtig

Tja, nachdem ein User aus dem englischsprachigen Ubuntu-Forum den Befehl export PATH="$HOME/Software/ImageMagick:$PATH" vorgeschlagen hatte, funktionierte magick – einmal. Dann kam wieder die übliche Fehlermeldung:

Command 'magick' not found, did you mean:
  command 'magic' from deb magic (8.2.157+ds.1-1)
Try: sudo apt install

Seht auch meine Beitrag „ImageMagick 7.0.10-23: ‚magick‘ funktioniert nicht richtig“.

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.