我已经寻找解决方案很长时间了,但我无法真正找到满足我需求的解决方案。
这就是故事。我正在创建一个网站,我真的想为下载的图像添加水印。
昨天我浏览了一个名为 9gag 的网站。如果您以前没有听说过这个网站,它是一个基于漫画的网站,我发现当您下载图像或从除他们的网站之外的其他任何地方访问图像时,页面底部会有一个“水印/横幅”图片。
例如这张图片: link ,注意图像底部没有横幅。
如果右键单击“复制图像 URL”,您将获得此链接:image 。现在看到横幅了吗?
我对他们是如何做到这一点感到非常困惑,如果我们可以在我们的网站上使用它,那就太好了。
大家有什么想法吗?它使用任何类型的 CGI 吗?
P.S:我不确定要添加哪些标签,所以如果有人知道更好的标签组合,请编辑它。
最佳答案
这个效果只是一个CSS技巧。图像本身实际上在底部包含水印,但图像标记被包装在一个 block 中,当图像在页面中显示时,该 block 会隐藏 (overflow:hidden) 图像的底部 42 个像素。
您还可以做其他更复杂的事情(例如,通过 php 脚本提供图像并比较 http 引用
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
}
)但这只有在有人尝试从不同网站加载图像或访问图像网址时才有效...通常另存为会从浏览器的缓存中保存图像,因此 css 技巧可能是您拥有的最佳选择(或这些选项的组合)。从根本上记住,您在网络上显示的任何内容都可以被捕获(上面的代码并非万无一失,您始终可以prtsc)。
关于php - 为图像添加水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8884688/