Hallo, ich habe mit Hilfe von $GLOBALS['TL_HOOKS']['getImage'][] eine Funktion programmiert, die ein Wasserzeichen in die Bilder reinrechnet.
PHP-Code:
class QFWatermark extends Frontend {
public function myqfwatermark($image, $width, $height, $mode, $strCacheName, $objFile)
{
$newimage = $strCacheName;
$watermark = imagecreatefrompng('watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image2 = imagecreatetruecolor($watermark_width, $watermark_height);
$image2 = imagecreatefromjpeg($image);
$size = getimagesize($image);
$dest_x = $size[0] - $watermark_width;
$dest_y = $size[1] - $watermark_height;
imagecopymerge($image2, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 50);
imagejpeg($image2,$newimage,95);
imagedestroy($image2);
imagedestroy($watermark);
// give back new image
$newimage = array($newimage, $width, $height, $mode);
return $newimage;
}
}
Prinzipiell funktioniert das Skript, nur frage ich mich, wie ich das Bild in der Ausgabe angezeigt bekomme ohne dass das Originalbild überschrieben wird. Im gezeigten Beispiel würde das Skript das Originalbild überschreiben und dort das Wasserzeichen integrieren. Das macht natürlich keinen Sinn. Dann habe ich versucht die Bilder mit Wasserzeichen einfach in einen neuen Ordner zu schreiben. Das funktioniert problemlos, nur wird bei der Ausgabe dann wieder auf das Originalbild zurückgegriffen.
Auch das überschreiben der Cache-Bilder brachte nichts, da die Funktion "getImage" bei der Ausgabe der Bilder immer nochmals ausgeführt wird. D.h. meine Funktion erstellt das Bild mit Wasserzeichen und dann kommt Contao und überschreibt es wieder.
Wie lässt sich das Problem lösen? Wohin muss ich die generierten Bilder mit Wasserzeichen speichern und wie bringe ich der Ausgabe bei, dass es diese dann auch verwenden soll?
In den Ausgabetemplates möchte ich nichts anpassen, da das ganze möglichst universell funktionieren soll.
?!
Lesezeichen