我想通过C#代码在我的JPEG图片中插入多个不可见的水印。这意味着我需要一个可以完成这项工作的.NET库而不是一些外部批处理应用程序。
有什么建议吗?
答案 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)
如果您正在处理重要的应用程序,为什么不尝试付费服务?
Digimarc和Signumtech可以使用他们的SDK为您提供这种支持。