当有人从您的网站下载图片时,是否可以添加水印?如果是的话,最好的方法是什么?
提前致谢。
答案 0 :(得分:3)
如果你的意思是Right Click -> Save
,那是不可能的,我害怕
如果您通常意味着您有专门的下载按钮或链接,您可以使它通过PHP文件重定向请求,该文件将添加所需的水印并生成新的图像文件以供下载。
答案 1 :(得分: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);
?>
答案 2 :(得分:1)
我建议在php http://www.php.net/manual/en/function.imagecopymerge.php中使用函数imagecopymerge()
来广告水印,但如上所述:应该在将它们加载到浏览器之前添加它们。当用户下载它们(右键单击)时,它们已经被提供给他们的浏览器(并且通常在缓存中)。
当然,您可以动态地为所有图像提供服务并检查http_referer
图像加载。如果缺少或没有预期的(文件没有从您的网页加载)然后添加水印,但这不是万无一失的。
答案 3 :(得分:1)
因为你说当人们右键单击并选择另存为时你想要保护东西。所以,我们可以使用9gag的方式。
使用固定大小的页脚创建图像。使用底部边距页脚大小的负边距父级。给overflow: 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
}
按照this tutorial中的说明在图片上制作水印。