6

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

有什么建议么?

4

5 回答 5

5

在图片中存储“不可见”数据被称为“隐写术”。谷歌搜索“steganography .net”将这篇文章列为热门文章 - 可能证明是有用的。

于 2008-12-29T11:26:30.553 回答
4

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

于 2008-12-29T11:25:10.120 回答
2

这样做的目的是什么?是否可以让您识别从您的网站获取的 JPG?

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

这个问题正是上面讨论隐写术中描述的问题,与图像的鲁棒性有关。

任何像你描述的水印都可以用来识别整个图像的直接副本,但是在我看来,如果它甚至在编辑器中打开并再次保存,那么压缩影响的变化就有可能水印。此外,如果有人要窃取您的图像并对其进行更广泛的处理 - 修补色彩平衡,稍微裁剪它等等,任何不可见的水印似乎都不太可能足够强大以生存并保持可识别性。

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

于 2008-12-29T11:50:35.183 回答
1

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

保守秘密:.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);

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

于 2008-12-29T11:36:14.370 回答
1

如果这是您正在开发的重要应用程序,为什么不尝试付费服务呢?

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

于 2008-12-29T11:57:21.600 回答