Kopierschutz für Bilder mit ImageMagick

Es geht darum wie macht man es einem anderen so schwer wie möglich ein Bild zu stehlen. Es so zu verändern das der Dieb möglichst viel Aufwand hat um was brauchbares daraus zu erhalten. Eine Methode die ich sehr schön fand ist die das man eine Bild in viele kleine Bilder zerlegt und zwischen den Bildern einen kleinen Streifen weg lässt. Möchte jetzt einer meine tolles Bild klauen dann muß er es aufwendig wieder zusammensetzen und dann hat er immernoch einen kleinen Streifen zwischen den Bildern der im Fehlt. Natürlich sieht man den weißen Streifen auch wenn man das Bild nicht stehlen will aber das muss jeder Bildliebhaber selber wissen.

Das Bild vorher

Wasserfall

Das Bild nachher

Das Programm

Das "Programm" ist eine Shell-Skript das ImageMagick benötigt. In den ersten paar Zeilen gibt man an wie groß die kleinen Bilder werden sollen und wie groß der weiße Streifen zwischen den Bildern werden soll. Ich hab das Skript unter Linux(Debian Etch) geschrieben und kann natürlich nicht für eventuelle Schäden haften. Das könnt ich mir nicht leisten ;-).

#!/bin/sh


# Breite des Ausschnittes
teilx="100"
# Höhe des Ausschnittes
teily="100"
# Weissraum zwischen den Bildern
leer="1"


# Startposition
startx="0"     # -> Von wo aus das Bild gekleinert wird in Achse X. Normal 0
starty="0"     # -> Von wo aus das Bild gekleinert wird in Achse Y. Normal 0
zaehler="100"  # -> Die ZAHL für den Dateiname der neuen Bilder wird von da aus gezählt



if [ ! $# -eq 1 ]
then
echo "Es nur ein Bild angegeben werden!

kopierschutz.sh BILDADRESSEN

Das Skript erstellt kleine Ausschnitte aus einem Bild mit einem Abstand
um einfaches Kopieren eines Bildes oder ein einfaches zusammensetzen zu
erschweren.

viel Spass damit :)"

exit -1
fi

fatal()
{
 echo $1
 exit -1
}

# Überprüft ob es die Datei wirklich gibt
[ ! -f "$1" ] && fatal "Datei: $i nicht gefunden"

i="$1"
echo "Bin bei: $i"

# Ermittelt das verwendete Verzeichnis wo die Bild enthalten ist.
PFAD=$(dirname "$i")
# Legt den Dateinamen für den Unterordner fest
# wo die kleinen Bilder hineinkommen
dir="$PFAD/$i-geschuetzt"

# Erstellt das Verzeichnis wenn es noch nicht vorhanden ist.
mkdir -p "$dir" &>/dev/null || fatal "Kann Verzeichnis '$dir' nicht erstellen. exit!" 
[ ! -w "$dir" ] && fatal "Hab keine schreibberechtigung für '$dir'. exit!"

# Ermittelt die Dateiendung
ENDUNG=$(echo "$i" | sed -e 's/.*\.\([^\.]*\)$//g')

# Ermittelt die Größe des Bilder
dateigroesse=$(identify -verbose "$i" | grep "Geometry" | sed -e 's/.*: //g')
width=$(echo $dateigroesse | sed -e 's/x.*//g')
height=$(echo $dateigroesse | sed -e 's/.*x//g')

# Ausgabe Datei für den HTML-Code
htmlout="$dir/bild.html"

# HTML-Kopf
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>
</head>

<body>' > "$htmlout"


# Schleifen die die einzelnen Bildausschnitte errechnen und ausschneiden.
while test $starty -le $height
do

 zeile=""

while test $startx -le $width
do

 echo "Erstelle Bild (Postion X=$startx Y=$starty liegen im Bereich des Bildes ($width x $height))"

 zaehler=$(expr $zaehler + 1)
 # $1 -> Breite ausschnitt (x)
 # $2 -> Höhe ausschnitt (y)
 # $3 -> von links (x)
 # $4 -> von oben (y)
 #echo " -> convert $i -crop $teilx x $teily + $startx + $starty $dir/$zaehler.$ENDUNG"
 convert "$i" -crop "$teilx"x"$teily"+"$startx"+"$starty" "$dir/$zaehler.$ENDUNG"

 zeile="$zeile<img src=\"$zaehler.$ENDUNG\" style=\"margin:0px;padding:0px "$leer"px "$leer"px 0px;\" />"


 startx=$(expr $startx + $leer)
 startx=$(expr $startx + $teilx)

done

 echo "<div style=\"margin:0px;padding:0px;line-height:0px;\">$zeile</div>" >> "$htmlout"
 zeile=""


 startx="0"
 starty=$(expr $starty + $leer)
 starty=$(expr $starty + $teily)

done

# HTML-Fuss
echo '</body>
</html>' >>  "$htmlout"

Viel Spass damit!

Weitere Möglichkeit

Man könnte auch einfach das Bild Inline mit CSS als Hintergrundgrafik einfügen. Der Vorteil hier ist das, daß Bild dadurch keine wirkliche Adresse mehr hat sondern direkt in der HTML-Datei eingebettet ist. Wie das geht wird im Artikel Inline-Grafiken in HTML bei SelfHTML.de beschrieben. Es ist zwar auch keine wirklicher Schutz aber es erschwert die Sache ein wenig. In Kombination mit der ersten Methode wird es dann schon schwierig für den Dieb. Aber der Internet Explorer bis mindestens Version 6 kann das Inline-Bild nicht anzeigen und der Opera 9.22 auch nicht.