Um seine Bilder im Internet vor unerlaubten Kopien und Diebstahl zu schützen wird oft ein Wasserzeichen in dieses eingefügt. Dies kann man manuell machen. Sind dies jedoch sehr viele Bilder, wird das schnell zur qual. Abhilfe schafft ein kleines PHP-Script welches schnell programmiert ist.
Die Bilder
PHP-Code
Danacht erstellt man eine PHP-Datei mit folgenden Inhalten
<?php // Header setzten header('Content-type: image/jpeg');
Hier wird der Header gesetzt, damit der Browser weiß, dass dies ein JPEG-Bild ist.
// Bilder laden $imgsrc = imagecreatefromjpeg('foto-wasserzeichen.jpg'); $imgzeichen = imagecreatefromjpeg('wasserzeichen.jpg');
Danach werden die einzelnen Bilder und Fotos geladen.
// Bild Infos $width = imagesx($imgsrc); $height = imagesy($imgsrc);
Nun lesen wir die Höhe und Breite des Fotos aus. Dies ist dann von Vorteil, wenn später das ganze dynamisch ablaufen soll.
// Bilder erzeugen $img = imagecreatetruecolor($width, $height);
Nun erzeugen wir ein neues Bild in der größte des Fotos. Sollte diese Zeile einen Fehler erzeugen, dann ändere das imagecreatetruecolor(); in ein imagecreate um. Dies hat zwar ein deutlich schlechteres Ergebnis, jedoch funktioniert dies dann auch unter einer GD Libary Version kleiner als 2.0.
// Bild einfügen imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height);
Anschließend fügen wir das Foto ein. Die ersten zwei “0″ sind die x/y-Koordinaten im Ziel. Die zweiten “0″ sind der Startpunkt zum kopieren im Originalfoto. $width und $height sind die Endpunkte zum kopieren.
// Wasserzeichen einfügen imagecopy($img, $imgzeichen, 0, 0, 0, 0, 150, 30);
Danach folgt noch das Wasserzeichen. Da dieses immer gleich ist, benötigen wir hier keine Variable für die Breite und Höhe.
// Bild anzeigen imagejpeg($img);
Nun lassen wir noch das Bild anzeigen…
// Speicher freigeben imagedestroy($img); ?>
… und geben schließlich noch den belegten Speicher wieder frei.
Wenn Du nun die PHP-Datei aufrust, wird dir das Foto mit Wasserzeichen angezeigt. Diese PHP-Datei kannst Du wie ein ganz normales Bild behandeln, also über den IMG-Tag in deine Homepage einbauen.
Hier nochmals der gesamte Code als Zusammenfassung:
<?php // Header setzten header('Content-type: image/jpeg'); // Bilder laden $imgsrc = imagecreatefromjpeg('foto-wasserzeichen.jpg'); $imgzeichen = imagecreatefromjpeg('wasserzeichen.jpg'); // Bild Infos $width = imagesx($imgsrc); $height = imagesy($imgsrc); // Bilder erzeugen $img = imagecreatetruecolor($width, $height); // Bild einfügen imagecopy($img, $imgsrc, 0, 0, 0, 0, $width, $height); // Wasserzeichen einfügen imagecopy($img, $imgzeichen, 0, 0, 0, 0, 150, 30); // Bild anzeigen imagejpeg($img); // Speicher freigeben imagedestroy($img); ?>
{ 4 Kommentare } { 3 Shares }
{ 4 Kommentare… lies sie unten oder schreib selbst einen }
Nützliches Tutorial – Danke! Auch wenn der Eintrag bereits etwas älter ist – zwei Verbesserungsvorschläge: 1) den PHP-Code am Schluss in einer Datei oder in einem Textfeld anbieten und 2) einen kleinen Fehler im Code verbessern: Wenn man obige Bildressourcen herunterlädt, trägt ein Bild den Namen “foto-wasserzeichen.jpg”, im PHP-Code wird aber die Bezeichnung “natur.jpg” verwendet – der Aufruf der Bildressource ist so also nicht möglich. Nur ein kleiner Fehler, kann aber irritieren. Ansonsten sehr übersichtlich.
@PHP-Neuling: Vielen Dank für Deine Kritik. Hab mir das gleich mal zu Herzen genommen und die Änderungen vorgenommen.
welchen Grund kann es haben, dass das selbe Script auf dem einen Server richtig funktioniert, auf einem anderen aber keine Bilder ausgegeben werden?
@manni: Pauschal und ohne näheres zu wissen würde ich mal darauf tippen, dass die GD Library nicht installiert ist. Oder es gibt einen anderen PHP-Fehler. Dazu einfach mal schauen ob ein PHP-Fehler oder evtl. auch nur eine Warnung, etc. angezeigt wird. Diese verhindern auch schon die Darstellung des Bildes.