在C#中添加不可见的图像水印?

时间:2008-12-29 11:21:31

标签: c# .net image watermark invisible

我想通过C#代码在我的JPEG图片中插入多个不可见的水印。这意味着我需要一个可以完成这项工作的.NET库而不是一些外部批处理应用程序。

有什么建议吗?

5 个答案:

答案 0 :(得分:5)

在图片中存储“隐形”数据称为“隐写术”。谷歌搜索“隐写术.net”产生this article作为其最高点 - 可能证明是有用的。

答案 1 :(得分:4)

有一个图像魔法库到c#的端口,它可以轻松地为你执行该操作...

答案 2 :(得分:2)

这是为了什么目的?是否可以识别从您的网站上获取的JPG?

  

评论中的回应:“是的,我想通过使用一些强大且不可见的水印来保护我的照片。半可见的网站标识不是一种选择......”

问题恰恰是上面关于隐写术的讨论中描述的问题,与图像的稳健性有关。

任何你描述的水印都可以用来识别整个图像的直接副本,但是在我看来,如果它甚至打开并在编辑器中再次保存,则有可能发生变化在压缩中影响水印。此外,如果有人要偷你的图像并做一些更广泛的修补颜色平衡,稍微裁剪一下等等,似乎任何看不见的水印都不足以生存并保持可识别性。

不幸的是我这里没有解决方案,但问题本身远非微不足道。可能值得寻找其他方法,你也许可以与水印并行使用(可能是自定义元数据?防止图像被轻易保存?),使你的图像更难被盗或使它们的价值降低是...

答案 3 :(得分:1)

devx.com上的这篇文章包含一个库(Stego),其中包含您可以使用的源代码:

Keeping Secrets Secret: Steganography with .NET

  

实施该API之后,就是这样   在一个内容中隐藏一条消息是微不足道的   .bmp文件:

   ICoverFile cover = new BMPCoverFile("cover.bmp");
   cover.CreateStegoFile("stego.bmp","Hello","MyPwd");   
  

同样,您可以提取消息   同样容易:

   IStegoFile stego = new 
      BMPStegoFile("stego.bmp","MyPwd");
   Console.WriteLine(stego.HiddenMessage);

更新:哦,对不起。 Matt链接到同一篇文章......在写这个答案时没有看到。

答案 4 :(得分:1)

如果您正在处理重要的应用程序,为什么不尝试付费服务?

DigimarcSignumtech可以使用他们的SDK为您提供这种支持。