Hallo liebe community,
anbei ein simples script dass alle eure Artikelbilder automatisch mit einem Wasserzeichen versieht. Ist noch Verbesserungswürdig, aber dafür ist es ja auch open source:
Datei anlegen views/watermark.php:
<?php
class Watermark extends oxUBase{
public function render(){
// load source image to memory
$image = $this->_imagecreatefromfile(getShopBasePath().oxConfig::getParameter('image'));
if (!$image) die('Unable to open image');
// load watermark to memory
$wm = $this->_imagecreatefromfile(getShopBasePath()."out/pictures/watermark.png");
if (!$wm) die('Unable to open watermark');
$maxw = imagesx($image);
$maxh = imagesy($image);
$watermark = imagecreatetruecolor($maxw, $maxh);
imagealphablending($watermark, true);
imagesavealpha($watermark, true);
imagefill( $watermark, 0, 0, imagecolorallocatealpha( $watermark, 0, 0, 0, 127 ) );
imagecopyresized($watermark,$wm,0,0,0,0,$maxw,$maxh,imagesx($wm),imagesy($wm));
// calculate the position of the watermark in the output image (the
// watermark shall be placed in the lower right corner)
$watermark_pos_x = imagesx($image) / 2 - imagesx($watermark) / 2;
$watermark_pos_y = imagesy($image) / 2 - imagesy($watermark) / 2;
// merge the source image and the watermark
imagecopy($image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0, imagesx($watermark), imagesy($watermark));
// output watermarked image to browser
header('Content-Type: image/png');
imagepng($image, '', 0); // use best image quality (100)
// remove the images from memory
imagedestroy($image);
imagedestroy($watermark);
exit();
}
protected function _imagecreatefromfile($image_path) {
// retrieve the type of the provided image file
if(!file_exists($image_path)) return;
list($width, $height, $image_type) = getimagesize($image_path);
// select the appropriate imagecreatefrom* function based on the determined
// image type
switch ($image_type)
{
case IMAGETYPE_GIF: return imagecreatefromgif($image_path); break;
case IMAGETYPE_JPEG: return imagecreatefromjpeg($image_path); break;
case IMAGETYPE_PNG:
$img = imagecreatefrompng($image_path);
imagealphablending($img, true); // setting alpha blending on
imagesavealpha($img, true); // save alphablending setting (important)
return $img;
break;
default: return ''; break;
}
}
}
Nun im Ordner out/pictures/ ein Bild Namens watermark.png ablegen und folgendes in die .htaccess Datei eintragen:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} oxseo\.php$
RewriteCond %{QUERY_STRING} mod_rewrite_module_is=off
RewriteRule oxseo\.php$ oxseo.php?mod_rewrite_module_is=on [L]
#Das folgende kommt dazu, am besten an diese Stelle
RewriteCond %{REQUEST_URI} (\/out\/pictures\/)
RewriteRule ^(.*\.(gif|jp?g|png))$ /index.php?cl=watermark&image=$1 [NC]
...
Viel spaß damit, Verbesserungen usw. könnt ihr gerne posten (z.B. ein caching der generierten Bilder wäre nicht schlecht)
Getestet unter CE 4.4.5_31315
Lizenz ist WTFPL -> http://sam.zoy.org/wtfpl/