【问题标题】:How do I add a watermark to an image client-side with JavaScript?如何使用 JavaScript 向图像客户端添加水印?
【发布时间】:2012-06-01 22:33:30
【问题描述】:

是否可以在客户端使用 jquery 为动画 gif 添加水印(文本或图像)。

在这种情况下,所有处理都是客户端。

我无法让它在 jsfiddle 上运行。不过很简单,就是在主图上加了水印。

我遇到的问题是我需要它来处理动画 gif。所以水印显示在右下角。

主js代码为:http://www.patrick-wied.at/static/watermarkjs/jq/

页面上的脚本:

var config = {
    "path": "watermark.png"
};
$(document).ready(function() {
    $(document).watermark(config);
});

我唯一的问题是,通常我们可以使用 imagemagik gd 和 php 等进行处理。但这必须在客户端工作。所以请给点建议。

【问题讨论】:

  • 您有什么理由要这样做吗?绕过水印的客户端实现很简单。
  • 你要求的是修改 .gif 客户端呢?不要与另一个 .gif 等重叠。我认为您不能使用 javascript 修改 .gif 客户端,但如果结果证明是错误的,我很乐意听到。
  • @MarkSchultheiss gif 是由用户客户端从一系列图像中创建的。这一切都在客户端完成,我们希望在最终图像呈现为动画 gif 之前将水印附加到最终图像。
  • 如果你想做这一切,这听起来像是 PHP 或其他服务器端语言的工作。我什至不知道您是如何创建 gif 图片客户端的?

标签: jquery


【解决方案1】:

没有可用于物理更改原始图像文件本身的客户端 JavaScript。但是,您可以使用 canvas 元素来处理图像数据。

您链接到的 watermark.js 脚本通过将图像绘制到画布元素然后将水印图像写入顶部来工作。我相信它会使用 img.src = canvas.toDataURL(); 之类的东西用画布数据替换原始图像源。

要使用动画 gif 进行类似的操作,您需要做更多的工作。特别是,您需要将 gif 作为原始二进制文件获取并解析出每一帧并执行上述操作。您还需要自己为 gif 制作动画,因为浏览器不再渲染它了。

to this question 发布的答案将是一个很好的起点。您还需要查看 gif 格式本身。

说了这么多,如果你想用水印保护你的图像,你需要在服务器端进行。只需禁用 JavaScript 和/或查看源代码以获取原始图像 url,就可以击败在客户端完成的任何操作。 watermark.js 脚本也容易受到同样的攻击。我认为这是一个有趣的练习,可能会阻止临时访问者盗取图像。但是,任何有足够决心的人都可以轻松击败。

【讨论】:

  • 谢谢戴夫。我喜欢这样的回复。如果您可以查看我们的项目,我很乐意私下将网址发送给您。 Ste.
  • @422 看起来是一个有趣的挑战。如果你想联系我,你可以通过我的网站在我的简历中找到我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 2021-02-16
  • 2011-07-24
相关资源
最近更新 更多