我想使用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]
答案 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]