Hallo,
in meinem heutigen Beitrag möchte ich euch einmal kurz zeigen, wie einfach es mit PHP ist, ein Wasserzeichen dynamisch auf ein Bild zu zeichnen. Dafür bietet uns PHP schon sehr nützliche Funktionen.
Hier ist das Bild auf welches der Wasserzeichen-Stempel gelegt werden soll:
Und so sieht der Stempel aus:
Um das ganze zusammen zu bringen, benutze ich den folgenden Code:
$wasserzeichen = imagecreatefrompng('wasserzeichen.png');
$bild = imagecreatefromjpeg('bild.jpg');
$wasserzeichenHeight = imagesx($wasserzeichen);
$wasserzeichenWidth = imagesy($wasserzeichen);
$bildWidth = imagesx($bild);
$bildHeight = imagesy($bild);
$currentPositionX = $bildWidth - $wasserzeichenHeight;
while($currentPositionX >= 0)
{
imagecopy($bild, $wasserzeichen, $currentPositionX, $bildHeight - $wasserzeichenWidth - 10, 0, 0, $wasserzeichenHeight, $wasserzeichenWidth);
$currentPositionX -= $wasserzeichenHeight;
}
header('Content-type: image/png');
imagepng($bild);
imagedestroy($bild);
Das Ergebnis sieht dann wie folgt aus:
Im Code müssen zuerst beide Bilder geladen werden. Anschließend werden die Abmessungen der Bilder ausgelesen, diese sind später für die Kachelung des Wasserzeichens wichtig. Die initiale Startposition ergibt sich aus der Breite des Bildes abzüglich der Breite des Wasserzeichens. Solange die aktuelle Position größer als 0 ist, wird das Wasserzeichen auf das Bild gekachelt. (Positionsberechnung: aktuelle X-Position abzüglich der Wasserzeichenbreite).
Falls bei der Generierung lediglich eine weiße Seite erscheint, sollte die Erhöhung der PHP-Direktiven „memory_limit“ abhilfe schaffen.
Viel Spaß mit diesem Schnippsel :)