0

当有人从您的网站下载图像时,是否可以添加水印?如果是,最好的方法是什么?

提前致谢。

4

4 回答 4

3

如果你的意思是在Right Click -> Saveing 时,那恐怕是不可能的。
如果你通常意味着你有一个专用的下载按钮或链接,你可以让它通过一个 PHP 文件重定向请求,该文件将添加所需的水印并生成一个新的图像文件供下载。

于 2012-11-14T10:53:10.027 回答
2

我有一个更好的主意。

既然您说当人们右键单击并选择 Save As时要保护东西。因此,我们可以使用 9gag 的方式。

创建具有固定大小的页脚的图像。使用底边距的页脚大小的负边距父级。Giveoverflow: hidden;使用户无法看到隐藏在视图中的水印。现在,当用户右键单击并另存为图像时,他们将有水印。总而言之,图像没有没有水印的地方。因此,在上传图片时,请使用上述技术添加水印。


或者,如果您想制作单独的水印图像,那么您可以检查热链接文件,然后提供水印图像。

header("content-type: image/jpeg");
if (!isset($_SERVER['HTTP_REFERER'])){die("alert('Restricted Access!');");};
$_u=parse_url($_SERVER['HTTP_REFERER']);
$_u=preg_replace("/(www.)/i","",strtolower($_u['host']));
$_i=$_SERVER['HTTP_HOST'];
$_i=preg_replace("/(www.)/i","",strtolower($_i));
if ($_u != $_i){
   //handle this with gd or redirect
}

按照本教程中的说明在图片上制作水印。

于 2012-11-14T11:16:53.863 回答
1

请检查本网站中相同的以下网址,这将对您有很大帮助

http://www.phpjabbers.com/put-watermark-on-images-using-php-php20.html

以下来自上面的链接

 <?php
function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) { 
   list($width, $height) = getimagesize($SourceFile);
   $image_p = imagecreatetruecolor($width, $height);
   $image = imagecreatefromjpeg($SourceFile);
   imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height); 
   $black = imagecolorallocate($image_p, 0, 0, 0);
   $font = 'arial.ttf';
   $font_size = 10; 
   imagettftext($image_p, $font_size, 0, 10, 20, $black, $font, $WaterMarkText);
   if ($DestinationFile<>'') {
      imagejpeg ($image_p, $DestinationFile, 100); 
   } else {
      header('Content-Type: image/jpeg');
      imagejpeg($image_p, null, 100);
   };
   imagedestroy($image); 
   imagedestroy($image_p); 
};
?>
<?php
$SourceFile = 'image1.jpg';//image path
$DestinationFile = 'images/image1-watermark.jpg'; //Out put path
$WaterMarkText = 'Copyright Watermark text';
watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile);
?>
于 2012-11-14T10:54:54.580 回答
1

我建议使用函数imagecopymerge()在 php http://www.php.net/manual/en/function.imagecopymerge.php中添加水印,但如前所述:应在将它们加载到浏览器之前添加它们。当用户下载它们(右键单击)时,它们已经被提供给他们的浏览器(并且通常在缓存中)。

当然,您可以动态提供所有图像并检查http_referer图像加载。如果缺少或不是预期的(未从您的网页加载文件),则添加水印,但这并非万无一失。

于 2012-11-14T10:56:27.450 回答