动态创建图像水印

时间:2014-01-17 09:22:51

标签: php watermark

我想使用php和.htaccess动态地为目录中的所有图像添加水印。下面的PHP代码在第6行给出了一个错误,上面写着“Undefined index:i。”我的所有图像都是.gif以及.png和.jpeg。

<?php 

    $basedir="C:/vhosts/phpcs5/images/product_images"; 
    $watermarkimage="PreviewWatermark.png"; 

    $file=basename($_GET['i']); 

    $image = $basedir."/".$file; 
    $watermark = $basedir."/".$watermarkimage; 

    $im = imagecreatefrompng($watermark); 

    $ext = substr($image, -3); 

    if (strtolower($ext) == "gif") { 
    if (!$im2 = imagecreatefromgif($image)) { 
    echo "Error opening $image!"; exit; 
    } 
    } else if(strtolower($ext) == "jpg") { 
    if (!$im2 = imagecreatefromjpeg($image)) { 
    echo "Error opening $image!"; exit; 
    } 
    } else if(strtolower($ext) == "png") { 
    if (!$im2 = imagecreatefrompng($image)) { 
    echo "Error opening $image!"; exit; 
    } 
    } else {
     die; 
     } 
     imagefilledrectangle($im2, 0  , (imagesy($im2))-(imagesy($im)) , imagesx($im2)  , imagesy($im2) ,  imagecolorallocatealpha($im2, 0, 0, 0, 100) ); imagecopy($im2, $im, (imagesx($im2)-(imagesx($im))), (imagesy($im2))-(imagesy($im)), 0, 0, imagesx($im), imagesy($im)); 

     $last_modified = gmdate('D, d M Y H:i:s T', filemtime ($image)); 

     header("Last-Modified: $last_modified"); 
     header("Content-Type: image/jpeg"); 
     imagejpeg($im2,NULL,95); 
     imagedestroy($im); 
     imagedestroy($im2); 


?> 

这是我的.htaccess文件

RewriteRule ^([^thumb].*\.[jJ].*)$ phpcs5/images/product_images/w.php?i=$1 [L]

1 个答案:

答案 0 :(得分:0)

我认为问题在于您的重写规则。你将匹配任何不以t,h,u,m或b开头的东西。如果没有更好地理解您希望重写规则要做什么,我就无法提供任何其他帮助。

但是,我猜你要重写任何不以单词thumb开头的内容,扩展名以j开头。 (例如,thumbfoo.jpg不会重写,但myimage.jpg会)

RewriteCond %{REQUEST_URI} !^thumb.*\.[jJ].*$
RewriteRule !(.*) /phpcs5/images/product_images/w.php?i=$1 [L]