Viele meiner Fotos sind derzeit ohne Wasserzeichen, da ich das in den Bildern immer als störend empfand. Heute ist mir jedoch bei den eingehenden Links aufgefallen, dass sehr viele Anfragen auf ein einziges Bild liefen. Der Aufruf der Seite ergab, dass jemand einen Sonnenuntergang als den seinen (also ohne Quellenangabe) ausgegeben hatte. Dumm gelaufen, jetzt steht dort eben, dass der jenige ein Dieb ist und die richtige Adresse des Sonnenuntergangs. Da ich Hotlinking aber nicht ganz abstellen wollte, nun ein kleiner Trick, der die Fotos mal zumindest markiert: Wasserzeichen.

Meine Wasserzeichen habe ich nun mit Imagemagick  erstellt, da dies auf der Kommandozeile von Linux verfügbar und sogar auch per PHP ansteuerbar ist. Da ich aber kein überdeutliches Wasserzeichen (wie bei Sven  zu sehen) verwenden wollte, sondern nur ein dezentes, war die Erstellung etwas komplizierter. Zunächst muss ein Stempel erzeugt werden, der die gewünschten Worte ("©2008 wolf-u.li") enthält:

1
2
3
4
5
#!/bin/sh
convert -size 150x25 xc:grey30 -font Arial -pointsize 10 -gravity center -draw "fill grey70 text 0,0 '© 2008 wolf-u.li'" stempelvordergrund.png
convert -size 150x25 xc:black -font Arial -pointsize 10 -gravity center -draw "fill white text 1,1 '©2008 wolf-u.li' text 0,0 '©2008 wolf-u.li' fill black text -1,-1 '©2008 wolf-u.li'" +matte stempelmaske.png
composite -compose CopyOpacity stempelmaske.png stempelvordergrund.png stamp.png
mogrify -trim +repage stamp.png

Stamp

Schlussendlich entsteht dabei eine Datei namens stamp.png, die den endgültigen “Stempel” enthält. Sieht dann etwa aus wie oben zu sehen.

Diese Datei wird nun auf ein Bild namens pic.jpg wie folgt angewandt:

1
2
#!/bin/sh
composite -gravity SouthEast -geometry +10+10 stamp.png pic.jpg pic.stamped.jpg

Zum Befehl: gravity gibt die Ecke an wie auf einem Kompass (SouthEast = rechts unten) und geometry gibt an, wieviel Abstand zum Rand sein soll. Für weitere Details dazu würde ich einfach im Manual  nachlesen.

Die neue Datei pic.stamped.jpg enthält in der Ecke rechts unten nun ein halbtransparentes Wasserzeichen.

Das ganze kann man ein wenig automatisieren. Speichere dies in eine Bash-Datei:

1
2
#!/bin/sh
composite -gravity SouthEast -geometry +10+10 stamp.png $1 $1

Wenn man diese nun mit dem Dateinamen als Argument aufruft, wird das Wasserzeichen erstellt und das Bild wieder in die gleiche Datei gespeichert. (z.B.: “stampme.sh pic.jpg”).

Gleichzeitig packe ich nun auch einen EXIF-Comment in alle Dateien:

1
exiv2 -M"set Exif.Photo.UserComment charset=Ascii Copyright 2008 by Ulrich Wolf - Visit https://wolf-u.li" $1

Anscheinend können EXIF-Daten verloren gehen, aber auch hierfür gibts eine Lösung. Mittels exiv2 werden die EXIF-Daten vor dem Erstellen des Wasserzeichens exportiert und abschließend wieder importiert. Der Blogger Melle  hat hierfür ein Skript gebastelt, das ich für meine Bedürfnisse zugeschnitten habe. Zum einen sollte die Datei nur das Wasserzeichen erhalten, nicht jedoch “umgespeichert” werden

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/bin/sh
# Script for stamping a watermark by wolf-u.li
#
for FILE in $*
do
 echo processing $FILE
 BASENAME=`echo $FILE | sed 's/\(.*\)\.[jJ][pP][gG]/\\1/g'`
 # backup metadata from file
 /usr/bin/exiv2 -v ex $FILE
 # apply watermark
 composite -gravity SouthEast -geometry +10+10 /home/uli/stamp.png $FILE $FILE
 # restore metadata
 /usr/bin/exiv2 -v in $FILE
 rm $BASENAME.exv
 /usr/bin/exiv2 -M"set Exif.Photo.UserComment charset=Ascii Copyright 2008 by Ulrich Wolf - Visit https://wolf-u.li" $FILE
done

Zum Schluss ein “Vorher/Nachher”-Vergleich (wobei ich das vermutlich auf die Thumbnails nicht anwenden werde):

Vorher
Nachher