【问题标题】:How can I process an image to remove a watermark within my iPhone application?如何处理图像以删除 iPhone 应用程序中的水印?
【发布时间】:2010-12-27 06:49:20
【问题描述】:

我想从我的 iPhone / iPad 应用程序中的图片中删除水印。我可以在此应用程序中执行任何类型的图像处理来执行此操作吗?

【问题讨论】:

  • 您提出的问题数量与您提出并接受答案的问题数量之比
  • 是的。但是我该如何改进呢?将我的问题标记为已解决?
  • 是的,将解决您之前问题的答案标记为已接受。
  • 这很重要,因为它是展示想要学习的开发人员与“请给我代码”开发人员之间区别的一种方式。
  • 另外,您的问题与 Xcode 无关。 Xcode 是 IDE,而不是语言、框架或图像处理工具。

标签: iphone ipad image-processing


【解决方案1】:

无法完成,抱歉。

加水印的图像原本是两张图像(基础和水印),它们合并在一起形成结果。这里的问题是最常见的图像格式(例如 JPG、PNG 或 GIF)没有图层的概念 - 因此基础是一层,水印是另一层:结果只是一层,两者都在其上被重绘。这有点类似于物理绘画:如果您使用水彩在纸上绘制一个图像,然后在同一点上绘制另一个图像,它们的颜色会混合,您将无法分辨哪个部分属于哪个部分,因为他们会成为一个单一的形象。

这与计算机图像格式类似:只有一个“层”,它对每个像素只编码一种颜色 - 只有当前颜色存在,并且图像不会跟踪其上的内容之前的像素。

现在,信息从结果中不可逆转地丢失了 - 换句话说,不可能只知道结果(或结果和水印)就恢复基础 - 顺便说一句,这正是水印的重点。

我借用了 StackOverflow 的图片精灵进行演示;实际使用的图像不是唯一的,该技术适用于任何图像。这是我使用的水印:

这是与基础合并后的结果图像:

现在,即使我们使用了准确的水印图像,也无法恢复原始图像中该星形下方的内容。通过图像处理操作,我们几乎可以从结果中移除星星,但没有足够的数据告诉我们曾经在下面是什么: - 这些信息在一开始就在合并中被删除了。

我们可以猜测曾经在那里有什么,但我们不再进行恢复,我们正在解释图像并猜测可能可能在那里 - 这非常困难,即使是人类;电脑在这方面真的很糟糕。 This is the original image,在我给它加水印之前 - 我敢打赌你期待的东西会略有不同,不是吗?

【讨论】:

    【解决方案2】:

    水印几乎肯定是图像的一部分。 (唯一不会出现的情况是 PDF 或 SVG,它可能是一个单独的矢量元素。)

    水印通常出现在图像上,用于管理知识产权;如果某人为特定用途授权了图像,通常会获得对没有水印的图像版本的访问权限。因此,想要“去除水印”也可能被视为高度可疑。

    【讨论】:

      【解决方案3】:

      水印是图像的一部分,没有什么神奇的方法可以去除它们并在任何工具中恢复丢失的像素。

      【讨论】:

      • 我认为不需要恢复丢失的像素,因为水印不是太大。
      • @user:水印至少有一个像素大吗?那么至少有一个丢失的像素需要恢复。
      【解决方案4】:

      看看源码!大多数或当前的水印是在 php 中作为自动脚本完成的。在大多数情况下,您会在源代码中看到基本图片

      【讨论】:

        猜你喜欢
        • 2013-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-13
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        相关资源
        最近更新 更多