Bilder mit Wasserzeichen

Eine große Zahl von Bildern soll weitergegeben aber nicht verschenkt werden. Zur Verankerung der Autorenschaft, soll der Autorenname als Wasserzeichen im Bild selbst angebracht werden. Für ein einzelnes Bild ist das kein Problem, das kann man zum Beispiel mit IrfanView erledigen.

Auch bei sehr vielen Bildern ist IrfanView mit seinem Batch-Modus hilfreich, Allerdings kann IrfanView nicht mit verschachtelten Ordnern umgehen. Zwar gibt es eine Checkbox “Include subfolders for ‘Add All'”, die es erlaubt, dass auch alle Bilder in tieferliegenden Ordnern bearbeitet werden, doch behält IrfanView die Struktur nicht bei und speichert alle bearbeiteten Bilder einfach in einem gemeinsamen Zielordner. Diese Checkbox ist daher auch mit dem Vermerk “not recommended” versehen.

Eine Abhilfe bietet das Programm ImageMagick, das mit einem PowerShell-Script automatisiert wird.

Wenn die Bilder, die mit einem Wasserzeichen zu versehen sind, verschiedene Größe haben, würde eine fixe Größe des Fonts verschieden große Wasserzeichen erzeugen. Damit das nicht der Fall ist, muss man entweder die Fontgröße der Bildgröße anpassen oder die Bilder zuerst alle auf dieselbe Größe konvertieren.

Bildgröße vereinheitlichen

In diesem Blog wurde die Anwendung von ImageMagick bereits zum Verkleinern von Bildern benutzt. Siehe “Bilder verkleinern“. Die Größenkonversion wird hier insofern erweitert, als das Programm rekursiv Bilder in allen Verzeichnissen sucht. Außerdem wird die Bearbeitung auf Bilddateien eingeschränkt.

# Bilder rekursiv verkleinern
#############################
Clear-Host
$Path = "S:\Documents\@NoOneDrive\kdf\bilder"
$Images = Get-ChildItem $Path -Attributes Archive -Recurse
$Imagetypes = ".jpg",".jpeg",".png",".bmp",".tif",".tiff"
$i = 0
foreach ($Image in $Images) {
    $ImagePath = "'" + $Image.FullName + "'"
    $Image_Exension = $Image.Extension
    if ($Image_Exension -in $ImageTypes) {
        $Expression = "convert $ImagePath -resize 1920x1080 $ImagePath"
        Invoke-Expression $Expression
        
        $i++
    }
    Write-Host $i
}

Bild mit Wasserzeichen mit IrfanView

Der Ausgangspunkt für dieses Vorhaben ist ein Artikel von Anthony Thyssen auf der Seite von ImageMagick, in dem die verschiedenen Arten von Wasserzeichen ausführlich beschrieben wird, “ImageMagick v6 Examples — Annotating Images

Grundsätzlich kann man Texte oder Bilder als Wasserzeichen benutzen. Ich beschränke mich hier auf Bilder, weil man den Text jederzeit in eine Bild konvertieren kann. Der Text ist “fiala.cc” wird als Bild gespeichert. Text wird in Inkscape mit weißem Hintergrund und schwarzem Rand zweimal eingefügt, mit einem kleinen Versatz der beiden Textversionen. Die Füllfarbe ist Weiß mit 25% Deckkraft:

fiala_cc.png

Als Testbild dient folgende Szene aus dem Klublokal eines Rapid-Fanklubs:

test.jpg

Von den vielen Möglichkeiten, Wasserzeichen in einem Bild zu platzieren, wurde die folgende ausgewählt:

composite -watermark 15% -gravity center fiala_cc.png test.jpg test_wz.jpg

Die Anwendung dieses Befehls ergibt:

text_wz.jpg

Die Anwendung auf alle Bilder erfolgt so:

# Bilder mit Wasserzeichen
##########################
Clear-Host
$Path = "S:\Documents\@NoOneDrive\kdf\bilder"
$Images = Get-ChildItem $Path -Attributes Archive -Recurse
$Imagetypes = ".jpg",".jpeg",".png",".bmp",".tif",".tiff"
$i = 0
foreach ($Image in $Images) {
    $ImagePath = "'" + $Image.FullName + "'"
    $Image_Exension = $Image.Extension
    if ($Image_Exension -in $ImageTypes) {
        $Expression = "composite -watermark 15% -gravity center fiala_cc.png $ImagePath $ImagePath"
        Invoke-Expression $Expression
        $i++
    }
    Write-Host $i 
}
Zur Werkzeugleiste springen