Bilder mit sichtbarem Dateinamen versehen

Wenn man Bilder auf Picasa veröffentlicht, werden sie umbenannt. Sie bekommen eine zig-stellige Nummer, die man sich a) nicht merken kann und b) nichts mit dem Namen auf der heimischen Festplatte zu tun hat.

Das ist blöd, wenn man Bilder nachbestellen will und sich andere die entsprechenden Bilder raussuchen wollen.

Lösung: den Dateinamen in das Bild bringen.

Dafür nutzt man am besten (da einfach batch-fähig) die Tools von Imagemagick, insbesondere convert.

Convert kann sogenannte “Escapes” benutzen, die mit verschiedenen bildbezogenen Inhalten gefüllt sind. Ich nutze hier “%t”, den Dateinamen ohne Endung. den einfach unten rechts (southeast) in weiß in’s Bild bringen (Beispiel für x.jpg):

convert x.jpg -gravity southeast -font DejaVu-Sans-Mono-Bold -pointsize 24 -fill white -annotate 0 '%t' x.stamped.jpg

Bei der Schriftgröße muss man probieren, was gut aussieht (groß genug, um lesbar zu sein, klein genug, um nicht zu stören). Der Schriftname muss von convert erkannt werden können, am besten dazu die Liste verfügbarer Fonts mit

convert -list font > fonts.txt

ausgeben und abspeichern und dort nach dem Namen suchen. Ich empfehle einen monospace-Font (Proportionalfont), bei dem die Nullen von den “O” gut zu unterscheiden sind.

Jetzt muss der Text noch auf dunklen und hellen Hintergründen gut lesbar sein, dazu fügen wir einen schwarzen Schatten ein. Wir setzen den Text schwarz ins Bild und den weißen Text leicht nach links oben versetzt:

convert x.jpg -gravity southeast -font DejaVu-Sans-Mono-Bold -pointsize 24 -fill black -annotate 0 '%t' -fill white -annotate +3+3 '%t' x.stamped.jpg

Die Versetzung von “+3+3” funktioniert für die Schriftart und -größe gut, evtl. muss man hier auch korrigieren.

Um das Ganze jetzt für alle Bilder eines Verzeichnisses auszuführen, nutzen wir den find-Befehl (mit Tiefe=1, um nicht in die Unterverzeichnisse zu rekursieren), Achtung: hier wird das Ursprungsbild überschrieben:

find -maxdepth 1 -name "*.jpg" -exec convert {} -gravity southeast -font DejaVu-Sans-Mono-Bold -pointsize 24 -fill black -annotate 0 '%t' -fill white -annotate +3+3 '%t' {} \;

Ein fertiges Skript (Direkt-Download) und andere hilfreiche Code-Snippets gibt es auf ekkart.de.