4. Advent – Hol dir den Code

Die 4. Kerze brennt und Weihnachten steht nun nichts mehr im Wege. Mit einem letzten Codebeispiel für die tägliche Computerpraxis verabschieden wir uns in die Festtage und melden uns im neuen Jahr mit neuen Themen zurück. Frohe Weihnachten und auf bald, eure ICT-Blogger”

Bildverarbeitung auf der Kommandozeile

In den meisten Fällen verarbeitet man mit Shellskripten Textdateien und Ausgaben von anderen Programmen. Wenig beachtet ist die Verarbeitung von Bilddateien. Aber warum sollte man so etwas tun? Die meisten Bildbearbeitungswerkzeuge von ImageJ (ausführliche Dokumentation hier) bis Photoshop bieten genügend Möglichkeiten zur Skriptverarbeitung.

Aber vielleicht möchte man schnell ein paar einfache Bildmanipulationen auf einem Server vornehmen, die dort hochgeladen wurden. Dafür Photoshop oder eine Java Runtime anzuwerfen, ist in den meisten Fällen übertrieben. Ausserdem geht es ja auch ein bisschen um den Spass an der Shellprogrammierung.

Mit ImageMagick und Exiftool bekommt man zwei freie und ausserordentlich leistungsfähige Programme zur Bildmanipulation und -verwaltung. Exiftool liest und schreibt die EXIF-Informationen in Digitalfotos, so dass man z.B. ein Programm schreiben kann, das nachträglich Ortsinformationen aus einer GPX-Datei in die Bilder schreibt. Oder einen Copyrightvermerk, oder, oder …

In Kombination mit ImageMagick ist ein Skript, das Thumbnails von Bildern erstellt und daraus eine kleine Online-Galerie in HTML generiert, schnell geschrieben:

#!/bin/bash

export COPYRIGHT="(c) 1967 J. Random User"

[ -d thumbs ] || mkdir thumbs &&

mogrify

 -format jpg -path thumbs -thumbnail 100x *.jpg

mogrify

 -fill white -undercolor '#00000080' -gravity South -annotate +0+5 '$COPYRIGHT' *.jpg

for img in *.jpg;
do
  exif --ifd=0 --tag=0x010e --set-value='Holiday in Somewhere' -o $img $img
# convert $img -bordercolor white -border 50x50 $img
# convert $img -bordercolor Black -border 1x1 $img
  TITLE=$(exif -m --ifd=0 --tag=0x010e $img)
  cat <<EOF

EOF done

Den HTML-Code “drumherum” habe ich mir hier aus Platzgründen gespart, er kann ebenfalls als Hier-Dokument eingefügt werden. Die Anwendung von ImageMagick und Exiftool habe ich fett markiert. In den beiden auskommentierten Zeilen kann optional noch ein Rahmen um die Bilder gezeichnet werden, was mir zumindest früher mal ganz gut gefiel.

So viele Möglichkeiten

Natürlich gibt es für eine Online-Galerie inzwischen auch praktischere Möglichkeiten, aber diesen (schon älteren) Code hatte ich mir als Anwendungsbeispiel für ImageMagick aufgehoben. Es existieren zahlreiche fertige Skripte für Effekte und Lösungen, die auch in Photoshop schon einiges an Aufwand bedeuteten. Eine meiner Lieblingslösungen ist das Whiteboard-Skript, dass aus einem blassen Handyfoto aus der Besprechung eine knackige Zeichnung macht, die man so auch in eine Projektdokumentation einbinden kann.