关于 watermark-removal
这是用于移除图片水印的命令行技能,适合需要自动检测或保留尺寸进行修复的图像处理流程。它会将疑似 Google SynthID 图片路由到裁剪法,其他水印则使用 OpenCV 修复。
主要功能
- 01自动检测并路由 SynthID
- 02检测水印所在角落
- 03OpenCV Navier-Stokes 修复
- 04裁剪、涂抹和强力处理方法
- 05单张图片与批量处理
适用场景
- 01移除单张图片中的水印
- 02批量处理文件夹中的图片
- 03使用修复法保留图片尺寸
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ faas-tech/ extend-my-claude-code --skill watermark-removal安装后在 Claude Code 中输入/watermark-removal确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/synthid-watermark.mdscripts/batch-process.pyremove-watermark.py详细介绍
通用水印移除
使用智能检测和经过验证的方法,从任意图片来源移除水印。智能路由:自动检测 Google SynthID,并使用经过验证的强力方法;对于未知类型的水印,则回退到基于 ML 的修复。
快速开始
单张图片 — 智能自动检测(推荐)
# Smart detection: Google SynthID → aggressive method (proven), Unknown → inpaint (ML)
python .claude/skills/watermark-removal/scripts/remove-watermark.py \
input.png \
output.png
单张图片 — 保留尺寸(强制使用 ML)
# Force ML inpainting even for Google SynthID (preserves exact dimensions)
python .claude/skills/watermark-removal/scripts/remove-watermark.py \
input.png \
output.png \
--method inpaint
批量处理(请先征得用户同意!)
⚠️ 重要: 批量处理前务必先询问用户,尤其是使用会改变尺寸的裁剪/强力方法时。
# Recommended: Preserves dimensions
python .claude/skills/watermark-removal/scripts/batch-process.py \
/path/to/input-dir \
/path/to/output-dir \
--method inpaint
# Alternative: Fast but crops 120px (requires user approval)
python .claude/skills/watermark-removal/scripts/batch-process.py \
/path/to/input-dir \
/path/to/output-dir \
--method aggressive
智能检测系统 ⭐ 新功能
此技能会自动检测 Google SynthID 水印,并选择最佳移除方法:
Google SynthID 检测
分析的特征:
- RGBA 模式(带 Alpha 通道的 PNG 格式)
- 尺寸较大(宽度和高度均 >1500px)
- 常见的 Google AI 宽高比(1.83、1.0、1.5、1.78,容差为 10%)
- 自动检测水印所在角落
智能路由逻辑:
-
如果检测到 Google SynthID → 使用
aggressive方法(已验证效果出色)- 从检测到的角落裁剪 120px
- 移除 Alpha 通道水印
- 覆盖任何残留部分
- 对 Google AI 图片的处理效果始终可靠
-
如果是未知/其他水印 → 使用
inpaint方法(基于 ML)- 保留原始尺寸
- 使用 OpenCV Navier-Stokes 算法
- 适用于任意水印类型
覆盖默认行为
# Force ML inpainting even for Google SynthID (preserves dimensions)
python scripts/remove-watermark.py input.png output.png --method inpaint
# Force aggressive method for non-Google watermarks
python scripts/remove-watermark.py input.png output.png --method aggressive
# Disable auto-detection (assume bottom-right corner)
python scripts/remove-watermark.py input.png output.png --no-detect
方法
修复方法(质量最佳)⭐ 新功能
功能: 基于 ML 的修复,并自动检测水印
特点:
- 自动检测水印位置(任意角落)
- 使用 OpenCV 的 Navier-Stokes 修复算法
- 智能填充水印区域,使其与周围图案融合
- 适用于任意水印类型(不只是 Google SynthID)
优点:
- 效果质量最高
- 保留原始尺寸
- 适用于位于任意角落的水印
- 能智能处理复杂背景
- 通用性强,适用于所有水印类型
缺点:
- 需要安装 OpenCV(
pip install opencv-python) - 比裁剪方法稍慢
- 处理特别大的水印时可能需要调整参数
适用场景:
- 需要尽可能高的质量
- 水印位于复杂/细节丰富的背景上
- 必须保留原始尺寸
- 处理非 Google 水印
强力方法(快速可靠)
功能: 自动检测角落,裁剪 120px,移除 Alpha 通道,并覆盖残留部分
优点:
- 快速可靠
- 自动检测水印所在角落
- 能正确处理 RGBA 图片
- 适合批量处理
缺点:
- 图片尺寸会缩小 120px
- 可能裁掉边缘附近的内容
适用场景:
- 快速处理大量图片(批量处理的默认方法)
- 可以接受缩小尺寸
- Google SynthID 水印
裁剪方法
功能: 自动检测并裁剪水印所在角落
优点:
- 速度最快
- 自动检测
- 处理最少
缺点:
- 可能残留水印
- 无法处理 Alpha 通道水印
适用场景:
- 速度优先
- 需要快速预览
覆盖方法
功能: 不裁剪,直接覆盖水印(不自动检测)
优点:
- 保留原始尺寸
- 方法简单
缺点:
- 只会处理右下角
- 可能留下明显瑕疵
- 不如修复方法可靠
适用场景:
- 纯色背景上的简单水印
- 兼容旧版
重要指南
尺寸保留优先级
平衡领域知识与尺寸保留
-
智能默认行为:
- 检测到 Google SynthID → 使用
aggressive方法(已证明效果完美,会裁剪 120px) - 未知水印 → 使用
inpaint方法(保留尺寸)
- 检测到 Google SynthID → 使用
-
可由用户覆盖:
- 使用
--method inpaint标志强制保留尺寸 - 使用
--method aggressive标志强制裁剪
- 使用
-
批量裁剪需要用户批准:
- 如果使用 aggressive 方法处理多张 Google SynthID 图片
- 说明该方法会将图片尺寸缩小 120px
- 获取明确确认
- 显示处理前后的尺寸
批量处理协议
未经用户确认,绝不开始批量处理:
-
说明处理内容:
- 要处理的图片数量
- 将使用的方法
- 是否会保留或更改尺寸
-
获取明确批准:
- “我将使用 [method] 方法处理 X 张图片。此操作[会/不会]更改尺寸。是否继续?”
-
优先选择非破坏性处理:
- 批量处理时默认使用
inpaint - 仅当用户明确表示速度优先于质量时,才使用
aggressive
- 批量处理时默认使用
工作流
1. 识别带水印的图片
常见水印类型:
- Google SynthID: 角落处的小星形/闪光图标
- 图库照片: 徽标或文字叠加
- AI 服务: 角落徽章(Midjourney、DALL-E)
- 相机水印: 日期/时间戳
2. 选择方法
智能默认工作流(新增):
- 运行脚本时不添加 --method 标志——智能检测会自动选择最佳方法
- 检测到 Google SynthID → 使用
aggressive方法(已证明效果完美) - 未知水印 → 使用
inpaint方法(基于 ML,可保留尺寸) - 如有需要,使用 --method 标志覆盖
方法选择指南:
- 智能自动(推荐): 不添加标志(检测到 Google SynthID → 使用 aggressive,否则 → 使用 inpaint)
- 强制保留尺寸:
--method inpaint(基于 ML,适用于任何水印) - 强制使用 Google 方法:
--method aggressive(裁剪 120px,非常适合 SynthID) - 速度优先:
--method crop(速度最快,会裁剪,但可能留下残留) - 旧版:
--method paint(基础方法,可保留尺寸,但可靠性较低)
3. 处理图片
智能自动检测(推荐):
python scripts/remove-watermark.py input.png output.png
强制保留尺寸:
python scripts/remove-watermark.py input.png output.png --method inpaint
快速批量处理:
python scripts/batch-process.py ./input ./output --method aggressive
禁用自动检测(强制处理右下角):
python scripts/remove-watermark.py input.png output.png --method inpaint --no-detect
4. 验证结果
- 检查输出图片的角落是否干净
- 确认没有裁掉重要内容
- 确认水印已完全移除
命令参考
remove-watermark.py
python scripts/remove-watermark.py INPUT OUTPUT [OPTIONS]
Arguments:
INPUT Input image path
OUTPUT Output image path
Options:
--method {crop|inpaint} Removal method (default: crop)
--size INT Watermark size in pixels (default: 60)
batch-process.py
python scripts/batch-process.py INPUT_DIR OUTPUT_DIR [OPTIONS]
Arguments:
INPUT_DIR Directory with images to process
OUTPUT_DIR Directory for cleaned images
Options:
--method {crop|inpaint} Removal method (default: crop)
--pattern PATTERN File pattern to match (default: *.png)
--size INT Watermark size in pixels (default: 60)
示例
示例 1:网站图片
场景: 用户有 3 张用于网站的 Google AI 图片,需要去除水印
# Batch process all PNG images
python scripts/batch-process.py \
./public/images \
./public/images-clean \
--method crop \
--pattern "*.png"
输出:
Found 3 images to process
Input: ./public/images
Output: ./public/images-clean
Method: crop
[1/3] Processing: ad-design-bedroom.png
✅ Saved to: ad-design-bedroom.png
[2/3] Processing: ad-design-kitchen.png
✅ Saved to: ad-design-kitchen.png
[3/3] Processing: ad-designs-bathroom.png
✅ Saved to: ad-designs-bathroom.png
✅ Successfully processed: 3/3
示例 2:保留精确尺寸
场景: 客户需要精确的 1920x1080 图片,不能裁剪
python scripts/remove-watermark.py \
hero-image.png \
hero-image-clean.png \
--method inpaint
示例 3:较大的水印
场景: 水印比平常更大(70px)
python scripts/batch-process.py \
./images \
./images-clean \
--method crop \
--size 70
技术详情
参见 references/synthid-watermark.md,了解:
- SynthID 水印规格
- 方法对比详情
- 边缘情况和注意事项
- 法律/道德准则
依赖项
必需:
- Python 3.7+
- Pillow (PIL):
pip install Pillow - NumPy:
pip install numpy
可选(用于 ML 修复):
- OpenCV:
pip install opencv-python
安装所有依赖项:
pip install Pillow numpy opencv-python
注意: inpaint 方法需要 OpenCV。其他方法无需安装 OpenCV。
提示
性能:
- 裁剪方法比修复快 5-10 倍
- 处理 100 张以上图片时,使用裁剪方法
质量:
- 使用 quality=95 保存,以尽量减少压缩
- PNG 格式比 JPEG 更能保留画质
备份:
- 始终保留带水印的原始图片
- 处理副本,不要处理原图
测试:
- 批量处理前先测试一张图片
- 如有需要,使用
--size标志验证水印尺寸