图片去水印 / 区域修补工具

框住图片上不想要的水印、logo 或杂物,用内容感知填充按周围画面补回来。全部在浏览器内完成,图片不上传。

所有处理均在你的浏览器内完成,数据不会上传。

使用方法

  1. 把图片拖进来,或点击选择。
  2. 在图片上拖拽出一个矩形,框住要去掉的水印。
  3. 选择质量档位,点去除。
  4. 按住「按住看原图」可以随时对比,满意后点下载。

需要去掉多个水印时,重复第 2、3 步即可——每次处理都在上一次的结果上继续。

它是怎么补的

用的是 PatchMatch 内容感知填充(Barnes et al., SIGGRAPH 2009),Photoshop 的「内容识别填充」也是建立在这个算法上的。

思路是:对洞里的每一个像素,去图像的别处找一个最像它周围环境的小块,然后把那个小块中心的颜色搬过来。每个像素各自独立地选源,所以渐变、天空与地面的交界、规则纹理这些能顺着周围自然延续下去,而不是被平均成一团模糊。

算法每轮做三件事:

反复几轮之后收敛。最后只对洞的边缘一圈做轻微模糊,盖住接缝处可能残留的细微色阶,内部保持锐利。

它做不到什么

这个算法不会「想象」内容,只会搬运。

它能做的是:把周围已经存在的纹理合理地延续到被遮挡的位置。所以纯色背景、天空、草地、木纹、墙面、有规律的渐变——这些场景下效果通常很好,甚至看不出修补痕迹。

它做不到的是:补出周围压根没有的东西。水印压在人脸上,它变不出那半张脸;压在一行文字中间,它拼不回那几个字;压在建筑物的独特结构上,它只能从别处搬一块看起来差不多的纹理过来,结果往往经不起细看。

遇到这种情况,换一个更小的选区、分几次处理,有时比一次框一大块要好。

关于图片尺寸

长边超过 2048 像素的图片会先等比缩小再处理。

原因是计算量跟面积走:手机拍的 4000×3000 照片上,一个看起来不大的水印框可能有几十万像素,跑满一轮要几十秒。缩到 2048 之后水印仍然清晰可辨,耗时降一个数量级。

导出的是处理后的尺寸。如果你需要保留原始分辨率,这个工具不适合——它的定位是快速处理,不是专业修图。

常见问题

我的图片会被上传吗?

不会。解码、修补、导出都在你自己的浏览器里完成,算法跑在一个 Web Worker 里,没有任何请求发往服务器。页面加载完之后断网也照样能用。

为什么有的地方补得很自然,有的地方一塌糊涂?

内容感知填充是从周围的画面里借像素来补的,它没有「想象」能力。背景规则时(纯色、天空、草地、木纹、渐变)效果很好;但如果水印正好压在人脸、文字或者某个独一无二的结构上,周围没有可借的相似内容,补出来就会是一团说不清的东西。这不是参数问题,是这类算法的固有边界。

选区应该框多大?

刚好盖住水印再多一两个像素就够。很多水印有半透明的抗锯齿边缘,框太紧会留下一圈浅色残影——工具内部已经自动向外扩了 4 像素来吃掉这圈。但框太大也有代价:要补的面积越大,可借的参考越少,结果越不可控。

「快速 / 均衡 / 最佳」差在哪?

差在块的大小和迭代轮数。块越大越能保住纹理的连续性,迭代越多越能收敛到更好的匹配,代价都是时间。小水印用快速就够了;压在复杂纹理上的大面积水印才值得等最佳模式。

为什么选区太大时它直接拒绝?

选区超过图片一半时工具会拒绝执行。那种情况下周围剩下的内容已经不足以支撑填充,跑十几秒再给你一团糊的结果,不如直接说清楚。