【问题标题】:Bitmaps in WPF - give watermarking effect and then recover images individuallyWPF 中的位图 - 赋予水印效果,然后单独恢复图像
【发布时间】:2011-04-15 05:57:08
【问题描述】:

我正在做一个需要使用两个位图的项目。我将它们放在一个网格中,降低不透明度(以提供水印效果)。

我正在使用RenderTargetBitmap 将网格渲染为位图并将位图保存到文件中。
现在我的要求是再次加载渲染的位图并分别恢复原始图片。有没有办法再次恢复原始图像。我想不出任何算法来实现这一点。

我的目标是提供水印效果,然后单独恢复图像。

【问题讨论】:

  • 也许你应该粘贴一些代码..
  • 所以你给图片加水印然后去水印?
  • @崔鹏飞:-是的,一种水印和去水印
  • @soner:-problem 不是针对代码,而是针对概念。只是建议我一些算法来完成水印然后去水印。

标签: c# wpf bitmap


【解决方案1】:

没有。在图像“展平”期间,信息会丢失。

您需要将图像和有关其属性(位置、不透明度)的信息保存到单个文件中。并在加载时恢复它。

【讨论】:

  • 是的,这就是为什么我请你们建议我完成水印然后去水印的其他方法。
【解决方案2】:

如果您的目标是模拟水印并允许以后“去水印”,那么假设您在解码时存在水印位图,您可能可以这样做。当然你不能使用你最初的方法——只是简单地合并两层是不可逆的。

您需要使用一些可逆变换,例如旋转源图像像素 RGB 值向量,使用水印图像像素 RGB 值作为参数。在去水印时,您只需使用水印图像中的负值。

嗯,RGB 矢量并不理想 - 您可以在旋转它时离开 RGB 空间。或许您可以找到更适合您目标的色彩空间(或 RGB 空间中的其他一些转换)。

(英语不是我的第一语言,甚至不是第二语言,因此,如果您不能理解我的想法,我深表歉意 - 请再问。)

【讨论】:

  • - 你的英语已经足够好了。但是我仍然想知道我是否可以通过旋转等RGB值来实现干净的水印效果。
  • 你无法达到干净的效果 - 水印的想法只是以不可逆的方式改变图像。为什么你不能在某处保存原始位图?您的原始帖子含蓄地声明您有原始可用。
  • 完整的想法假设我有一张我不想让其他人看到的图片。我想使用多个水印来执行此操作,即使用多层水印使原始图像无法识别,最后使用密码检索原始图像。
【解决方案3】:

你为什么不试着把它做成两层位图呢?

【讨论】:

  • 我只是认为您可以将无水印图像保留在磁盘上。当图片需要曝光时,动态加水印。
  • - 实际上情况与您所说的相反。我有一张带水印的图片,我必须动态显示原始图片。
  • 只是一个有趣的想法。 :) 我们可以得到水印区域。从源图像中剪切相同区域,然后粘贴到带水印的位图中。由于您同时拥有源位图和水印位图,因此摆脱水印和高成本并不是一种简单的算法。水印很容易添加,但不容易去除。只是我的想法。
【解决方案4】:

我想知道你是否可以使用 TIFF 格式来存储多张图像。以这种方式显示,您可以选择显示带/不带水印。

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 2021-03-25
    • 2010-12-12
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多