我正在尝试向目录中的所有图像添加水印,例如 www.example.com/private。其中一些图像具有很大的分辨率,而其他图像则相对正常,因此目前我的水印对于较小的图像效果很好。即使将水印居中,我仍然会留下较大图像的理想部分,容易被裁剪。
所以我的问题是我将如何编写一个 php 脚本来在整个图像中垂直和水平重复水印?我对后端开发不太了解,除了我知道它需要提供足够的水印保护,所以我一直在谷歌上四处寻找,只能找到这个http://www.regardadesign.co.uk/blog/post/php-image-manipulation/15 http://www.regardadesign.co.uk/blog/post/php-image-manipulation/15,这是行不通的。
到目前为止,我已将以下 .htaccess 文件放入 /private 目录中:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.(gif|jpeg|jpg|png)$ /admin/watermark.php [QSA,NC]
</ifModule>"
这是 watermark.php 文件中的脚本:
<?php
ini_set('memory_limit','200M');
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
$image = imagecreatefromstring(file_get_contents($path));
$w = imagesx($image);
$h = imagesy($image);
$watermark = imagecreatefrompng('watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);
imagecopy($image, $watermark, (($w/2)-($ww/2)), (($h/2)-($wh/2)), 0, 0, $ww, $wh);
header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
exit();
?>
发生这种情况是因为您只插入水印一次。如果你沿着图像区域重复水印,它就会起作用。
替换你的 imagecopy 行:
$img_paste_x = 0;
while($img_paste_x < $w){
$img_paste_y = 0;
while($img_paste_y < $h){
imagecopy($image, $watermark, $img_paste_x, $img_paste_y, 0, 0, $ww, $wh);
$img_paste_y += $wh;
}
$img_paste_x += $ww;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)