2012-01-16 112 views
2

我已经搜索了一个解决方案的年龄,但我无法真正找到适合我需求的解决方案。将水印添加到图像

这就是故事。我创建一个网站,我真的想添加水印到下载的图像。

昨天我在一个名为9gag的网站上浏览。如果你以前没有听说过这个网站,那么它是一个基于漫画的网站,我发现当你下载一张图片,或者从除了他们的网站以外的任何地方访问图片时,在图片底部有一个“水印/横幅”图片。

例如,拍摄这张图片: link,请注意图片底部没有横幅。

如果您右键单击“复制图片网址”,您会看到以下链接:image。现在看横幅?

我很困惑他们是怎么做的,如果我们可以在我们的网站上使用它,这将是非常好的。

任何有任何想法的人?它使用任何类型的CGI吗?

P.S:我不确定要添加什么标签,所以如果有人知道更好的标签组合,请进行编辑。

+0

我不知道你的例子,但你可以做到这一点(水印添加)使用PHP GD库,很容易图像。看看这里http://php.net/manual/en/ref.image.php – 2012-01-16 18:46:36

回答

4

这种效果只是一个CSS技巧。图像本身实际上在底部包含水印,但图像标签被封装在一个块中,该块在页面中显示时隐藏(溢出:隐藏)图像的底部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 
} 

),但是这个如果有人试图加载只会工作来自不同网站的图像,或者如果他们转到图像url ...通常会保存 - 这样可以将图像从浏览器的缓存中保存下来,因此css技巧可能是您拥有的最佳选项(或这些选项的组合)。基本上请记住,您在网络上显示的任何内容都可以被捕获(上面的代码并非万无一失,您可以随时通过prtsc)。

+0

非常感谢你为快速响应本D,我从来没有想过,他们会做的CSS技巧。 另外我会尝试你给我的PHP代码,非常感谢你。 – 2012-01-16 19:16:50

+0

还要记住 - 假设您的水印是为了防止版权侵犯 - 以使用css技巧为例,使用水印切掉该图像的底部是一件微不足道的事情,包括(因为它是可预测的大小)通过脚本或服务器端软件这样做的能力,可以将这些图像提供给另一个页面。您可能会看到使用不可见水印的水印,或几乎如此。目前我似乎无法找到合适的人,但在过去的几天里看到了一个。 – MattJenko 2012-02-10 22:04:43

1

GD库的PHP将帮助你做到这一点。

  1. 你需要创建一个使用imagecreate功能,但增加了一些更多的“空间”,以原始大小的新形象。例如:如果我有200×200(你可以检索使用GD功能太)的图像,你需要使用该函数来创建一个200x220px图像

  2. 使用imagefilledrectangle功能

  3. 填入新图像与灰色
  4. 复印原始图像划分成使用imagecopy

  5. 设置标头的内容类型的图像的新的/ 类型 PNG GIF等。

  6. 输出到第e图像使用imagepng或任何其他具有所需格式的功能。

+0

虽然这并不是我正在寻找的东西,但这对未来将会非常有帮助。谢谢! – 2012-01-16 19:17:25

+0

@MichaelSchinis对,对不起,我已经理解了你想要的东西。 xD – WoLfulus 2012-01-16 20:23:52

+0

+代表一个很好的答复虽然:) – 2012-01-16 22:29:26

0

我已经使用jQuery水印成功: Jquery Watermark

+0

谢谢你的贡献,但我认为本D有最好的解决方案。 这个jQuery插件总是添加水印,我真的不希望这一点,我只希望它被保存时显示。 – 2012-01-16 19:14:46