Php 在图像下载时自动添加水印
当有人从您的网站下载图像时,是否可以添加水印?如果是,最好的方法是什么Php 在图像下载时自动添加水印,php,javascript,image-manipulation,watermark,Php,Javascript,Image Manipulation,Watermark,当有人从您的网站下载图像时,是否可以添加水印?如果是,最好的方法是什么 提前谢谢。如果您的意思是当右键单击->保存它时,恐怕这是不可能的。 如果你通常是说你有一个专用的下载按钮或链接,你可以让它通过一个PHP文件重定向请求,该文件将添加所需的水印,并生成一个新的图像文件供下载。请在本网站中检查以下相同的url,这将对你有很大帮助 以下是从上面的链接 <?php function watermarkImage ($SourceFile, $WaterMarkText, $Destinat
提前谢谢。如果您的意思是当
右键单击->保存它时,恐怕这是不可能的。
如果你通常是说你有一个专用的下载按钮或链接,你可以让它通过一个PHP文件重定向请求,该文件将添加所需的水印,并生成一个新的图像文件供下载。请在本网站中检查以下相同的url,这将对你有很大帮助
以下是从上面的链接
<?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);
?>
我建议在php中使用函数imagecopymerge()
来添加广告水印,但如上所述:应该在将它们加载到浏览器之前添加它们。当用户下载它们(右键单击)时,它们已经被提供给浏览器(通常在缓存中)
当然,您可以动态地为所有图像提供服务,并在图像加载时检查http\u referer
。如果缺少或不是预期的(文件未从网页加载),则添加一个水印,但这不是万无一失的 我有个更好的主意。
因为你说过当人们右键单击并选择“另存为”时,你想保护物品。因此,我们可以使用9gag的方式
创建具有固定页脚大小的图像。使用底边距页脚大小的负边距父级。给定溢出:隐藏
这样用户就看不到隐藏在视图中的水印。现在,当用户右键单击并另存为图像时,他们将获得水印。总之,没有一个地方的图像没有水印。因此,在上传图像时,使用上述技术添加水印
或者,如果您想制作单独的水印图像,则可以检查热链接文件,然后提供水印图像
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
}
请按照中的说明在图片上添加水印。欢迎……一切都有可能,但您需要先尝试一下。如果您有任何问题,请在此处自由提问,如果您的下载是通过php脚本进行的,那么我的答案是肯定的。如果您在某处包含了没有水印的图像,用户将始终能够在没有水印的情况下获得它。这是无法避免的。最让图像下载程序恼火的事情是将每个图像分成5x5像素的大部分或其他:0)@coldpumpkin你看到我的答案了吗?虽然这个链接可能会回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。