如何避免在小图像上放置水印

时间:2012-12-22 01:00:20

标签: php .htaccess watermark

我会明白这一点。我用htaccess安装了Watermark。一切正常,但我不知道如何制作脚本不要在小于200x200的图像上放置水印。水印在底部显示浅灰色线,watermark.png也是如此。如何删除该行?

我没有表现出任何努力。我做了4个小时的研究并修改它以至于我的照片被破坏了。我发现要添加到php的行不要在小图像上放置水印,但不知道放在哪里。

这是将水印放在图像上的.php。请帮助这对我来说是复杂的。

<?php
$basedir="/uploads/";
$watermarkimage="tbwm.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);

?>

1 个答案:

答案 0 :(得分:1)

快捷方式:
只需将imagecopy函数调用放入if(imagesx(im2) > 250 && imagesy(im2) > 250)

即可
if (imagesx($im2) > 250 && imagesy($im2) > 250) {
    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));
}
很长的路:
将为水印创建的所有内容都放在if