图片去水印
纯本地反向 Alpha 混合算法无损去除 Gemini 图片/视频水印
🔥 厌倦了 Gemini 的水印?试试更强大的 GPT Image 2,访问 pilio.ai —— 限时免费。
Gemini Watermark Remover — 无损水印去除工具
一款开源工具,用于去除 AI 生成图像中的 Gemini 水印,在支持的输出上可实现高保真、可重复的结果。引擎采用纯 JavaScript 构建,基于数学精确的反向 Alpha 混合算法,而非不可预测的 AI 修复技术。
🚀 需要「在线 Gemini 水印去除器(推荐)」?请访问 geminiwatermarkremover.io —— 免费、无需安装、直接在浏览器中运行。
💡 如果遇到 Gemini Watermark Remover 无法处理的水印?试试通用型 AI 水印去除器:pilio.ai/image-watermark-remover
特性
- ✅ 100% 本地处理 - 所有图像处理均在浏览器或本地机器上完成,绝不上传任何内容。
- ✅ 数学精度 - 基于反向 Alpha 混合公式,而非「幻觉」式 AI 模型。
- ✅ 自动检测 - 利用 Gemini 已知的输出目录和本地锚点搜索自动识别水印大小和位置。
- ✅ 灵活使用 - 在线工具适合快速使用,Chrome 扩展或用户脚本可无缝集成 Gemini 页面,CLI 和 Skill 适用于脚本和自动化。
- ✅ 视频支持 - 在 geminiwatermarkremover.io/video 去除 Gemini 生成视频中的水印。
- ✅ 跨平台 - 适用于现代浏览器(Chrome、Firefox、Safari、Edge)和 Node.js 环境。
Gemini 水印去除示例
点击展开/收起示例
| 原始图像 | 去除水印后 |
|---|---|
![]() | ![]() |
⚠️ 免责声明
[!WARNING] 使用风险自负
本工具会修改图像文件。虽然设计为可靠运行,但以下情况可能导致意外结果:
- Gemini 水印实现的差异
- 损坏或异常图像格式
- 测试未覆盖的边缘情况
作者对任何数据丢失、图像损坏或意外修改概不负责。使用本工具即表示您确认了解这些风险。
[!NOTE] 注意:请停用任何指纹防护扩展(例如 Canvas Fingerprint Defender),以免出现处理错误。https://github.com/GargantuaX/gemini-watermark-remover/issues/3
如何去除 Gemini 水印
在线 Gemini 水印去除器(推荐)
面向所有用户 —— 去除图像中 Gemini 水印最快最便捷的方式:
- 打开 geminiwatermarkremover.io。
- 拖放或点击选择您的 Gemini 生成图像。
- 引擎会自动处理并去除水印。
- 下载清洁后的图像。
在线视频水印去除器(新功能!)
适用于带有可见水印的 Gemini 生成 视频:
- 打开 geminiwatermarkremover.io/video。
- 上传或拖放您的 Gemini 生成视频。
- 工具会自动检测并去除视频中的水印。
- 下载清洁后的视频。
注意:视频水印去除完全在浏览器中运行 —— 不会向任何服务器上传文件。
Chrome 扩展
如果您不想使用用户脚本管理器,但仍希望 Gemini 页面自动集成预览、复制和下载功能,请使用此扩展。
- 打开 Chrome 网上应用店中的 Gemini Watermark Remover。
- 点击 添加至 Chrome 并确认安装。
- 打开 Gemini。扩展会自动处理支持的 Gemini 图像。
弹出窗口中包含一个“在 Gemini 上启用”开关。如果 Gemini 变慢、行为异常或您需要对页面进行故障排除,请关闭该开关并刷新 Gemini。
Chrome 网上应用店的安装会自动更新。如果网络无法访问应用店,则可以从 GitHub Releases 和官方网站下载入口获取匹配的已验签压缩包(gemini-watermark-remover-extension-v*.zip),以便手动解压安装。
用户脚本
- 安装用户脚本管理器(例如 Tampermonkey 或 Greasemonkey)。
- 打开 gemini-watermark-remover.user.js。
- 脚本会自动安装。
- 导航至 Gemini 对话页面。
- 页面上符合条件的 Gemini 预览图像在处理后会被原地替换。
- Gemini 原生的“复制图像”和“下载图像”操作也会返回处理后的结果。
当前用户脚本的边界:
- 不注入每张图像的控件
- 无弹出窗口 UI 或批量操作界面
- 当源图像可访问时,页面预览以及原生复制/下载流程均会经过处理
- 预览图像在处理期间保持原始可见,并显示一个淡化的“处理中…”覆盖层
- 如果预览处理失败,原始页面图像保持可见且可用
Skill
适用于涉及 AI 编码代理的工作流程:
skills/gemini-watermark-remover/包含一个打包好的 Skill,代理可发现并调用。- 使用
skills.sh安装:
pnpm dlx skills add GargantuaX/gemini-watermark-remover --skill gemini-watermark-remover
- 仅在本地设置需要时添加
--agent、--yes或--copy等标志。 - 用法:
node skills/gemini-watermark-remover/scripts/run.mjs remove <input> --output <file>
- 有关代理集成的详细信息,请参阅
SKILL.md。
CLI
对于脚本、CI 和本地批量工作流,请使用直接 CLI:
# 本地仓库
node bin/gwr.mjs remove <input> --output <file>
# 全局安装
gwr remove <input> [--output <file> | --out-dir <dir>] [--overwrite] [--json]
如果你没有全局安装 gwr,请使用:
pnpm dlx @pilio/gemini-watermark-remover remove <input> --output <file>
默认的 CLI 文件解码器/编码器使用 sharp。仅使用浏览器或 ImageData API 的 SDK 使用者不需要它。如果你在自己的项目中使用 CLI 文件路径,请同时安装 sharp 和此包:
pnpm add sharp
无法去除你的水印?
此工具针对 Gemini 的可见水印(右下角的半透明徽标)。如果你的图片水印不符合已知的 Gemini 格式,或者你需要去除其他类型的图片水印,请尝试通用 AI 水印去除器:
👉 pilio.ai/image-watermark-remover
开发者预览
该仓库仍保留一个本地内部预览工具,位于 /dev-preview.html,用于单张图片的比较、复制和下载验证。
- 这是一个保留的内部调试界面,不是公开产品网站。
- 根路径
/现在只将用户重定向到官方网站、userscript 构建产物和内部预览页面。 - 面向公众的使用应优先选择官方网站或 userscript,而不是此本地预览工具。
开发
# 安装依赖
pnpm install
# 开发构建
pnpm dev
# 生产构建
pnpm build
# 本地静态服务
pnpm serve
注意事项:
- 根路径
/现在是一个轻量级入口页面,指向官方网站、userscript 构建产物和保留的内部预览页面。 - 内部浏览器预览工具位于
/dev-preview.html,现在作为仅支持中文的静态单图比较工具保留,用于本地算法/UI 调试,不再维护面向公众的语言或主题切换功能。 pnpm dev/pnpm serve仍然提供 userscript、探测页面和这些静态资源。
macOS 上的 Tampermonkey 调试
对于 macOS 上仓库的固定配置文件工作流:
# 构建最新的 userscript
pnpm build
# 如果需要,启动本地 dist 服务器
pnpm dev
# 打开固定 Chrome 配置文件,启用远程调试
./scripts/open-fixed-chrome-profile.sh --url https://gemini.google.com/app
注意事项:
- 固定配置文件位于
.chrome-debug/tampermonkey-profile - 默认 CDP 端口为
9226 - 默认代理为
http://127.0.0.1:7890;如果不需要,请使用--proxy off禁用它 - 从活动的本地
pnpm dev服务器重新安装最新的 userscript pnpm dev从http://127.0.0.1:4173/开始探测,如果该端口已被占用,则自动递增- 如果你在跟踪之前捕获的调试会话,其端口可能不同;请信任当前的
pnpm dev输出,而不是硬编码4173
SDK 用法(高级/内部)
包根目录仍然暴露一个 SDK,但此路径适用于高级或内部集成场景:
import {
createWatermarkEngine,
removeWatermarkFromImage,
removeWatermarkFromImageData,
removeWatermarkFromImageDataSync,
} from '@pilio/gemini-watermark-remover';
当你已经有解码后的 ImageData 时,使用纯数据 API:
const result = await removeWatermarkFromImageData(imageData, {
adaptiveMode: 'auto',
});
console.log(result.meta.decisionTier);
当你拥有 HTMLImageElement 或 HTMLCanvasElement 时,使用浏览器图片 API:
const { canvas, meta } = await removeWatermarkFromImage(imageElement);
document.body.append(canvas);
console.log(meta.applied, meta.decisionTier);
如果你需要处理多张图片,重用单个引擎实例以便 Alpha 映射保持缓存:
const engine = await createWatermarkEngine();
const first = await removeWatermarkFromImageData(imageDataA, { engine });
const second = await removeWatermarkFromImageData(imageDataB, { engine });
对于 Node.js 集成,使用专用子路径并注入你自己的解码器/编码器:
import { removeWatermarkFromBuffer } from '@pilio/gemini-watermark-remover/node';
const result = await removeWatermarkFromBuffer(inputBuffer, {
mimeType: 'image/png',
decodeImageData: yourDecodeFn,
encodeImageData: yourEncodeFn,
});
运行时要求
Web 和 Userscript
- 现代 Chrome / Firefox / Safari / Edge 类浏览器
- ES 模块
- Canvas API
- Async/Await
- TypedArray(
Float32Array、Uint8ClampedArray) - 对于网站复制按钮:
navigator.clipboard.write(...)和ClipboardItem
CLI 和技能
- 能够运行此包的本地 Node.js 运行时
- 使用默认 CLI 文件解码器/编码器时安装了
sharp - 本地输入/输出路径的文件系统访问权限
- 对于本地仓库使用:
node bin/gwr.mjs remove <input> --output <file>
node skills/gemini-watermark-remover/scripts/run.mjs remove <input> --output <file>
- 对于分布式技能使用,本地环境必须能够执行打包后的
gwrCLI 边界
测试
# 运行所有测试
pnpm test
回归测试包括来自 src/assets/samples/ 的图片 fixture。
源样本保留在 git 中。
这些 fixture 的命名和保留规则记录在 src/assets/samples/README.md 中。
复杂的预览/下载验证说明记录在 docs/complex-figure-verification-checklist.md 中。
src/assets/samples/fix/ 下的本地文件是可选的快照输出,用于手动回归检查,且有意不通过 git 跟踪。
发布说明
有关发布历史,请参见 CHANGELOG.md;有关本地发布清单,请参见 RELEASE.md。最新的发布后收尾工作记录在 docs/release-1.0.29-post-release.md。
Gemini 水印去除原理
Gemini 水印处理过程
Gemini 使用标准 Alpha 合成来应用水印:
$$watermarked = \alpha \cdot logo + (1 - \alpha) \cdot original$$
其中:
watermarked:带有水印的像素值。α:Alpha 通道值(0.0 - 1.0)。logo:水印徽标颜色值(白色 = 255)。original:我们要恢复的原始像素值。
反向解法
要去除水印,我们解出 original:
$$original = \frac{watermarked - \alpha \cdot logo}{1 - \alpha}$$
通过在已知纯色背景上捕获水印,我们重建出精确的 Alpha 映射,并应用逆公式来无损失地恢复原始像素。
检测规则
引擎采用分层检测来定位和验证水印:
- 尺寸目录查找 — 将图片尺寸与 Gemini 已知的输出尺寸进行匹配,以预测水印大小和位置。
- 局部锚点搜索 — 通过扫描预期水印区域周围的像素数据来细化预测位置。
- 恢复验证 — 在应用去除前确认检测到的水印是真实的,避免误报。
默认水印配置:
| 条件 | 水印尺寸 | 右外边距 | 下外边距 |
|---|---|---|---|
| 较大的 Gemini 输出 | 96×96 | 64px | 64px |
| 较小的 Gemini 输出 | 48×48 | 32px | 32px |
项目结构
gemini-watermark-remover/
├── bin/ # 发布的 CLI 入口点 (`gwr`)
├── public/
│ ├── index.html # 官方网站/用户脚本/内部预览的入口页面
│ ├── dev-preview.html # 用于本地调试的内部浏览器预览工具
│ └── tampermonkey-worker-probe.* # 用于用户脚本/调试流程的探测页面
├── skills/
│ └── gemini-watermark-remover/ # 可分发的代理技能包
├── src/
│ ├── assets/ # 校准资产和回归样本
│ ├── cli/ # CLI 参数解析和文件工作流
│ ├── core/ # 水印数学、评分和恢复
│ ├── page/ # 用于 Gemini 页面集成的页面侧运行时
│ ├── sdk/ # 高级/内部 SDK 接口
│ ├── shared/ # 共享的 DOM、Blob 和会话辅助工具
│ ├── userscript/ # 用户脚本入口点和浏览器钩子
│ ├── workers/ # Worker 运行时
│ ├── app.js # 内部单图预览工具入口点
│ └── utils.js # 内部预览页面的共享浏览器辅助工具
├── tests/ # 单元测试、回归测试、打包测试和冒烟测试
├── scripts/ # 本地自动化和调试启动器
├── dist/ # 构建输出目录
├── build.js # 构建脚本
└── package.json
架构概述
src/core/包含水印检测、候选选择、恢复指标和反向 alpha 去除管线。src/userscript/、src/page/和src/shared/实现了真实的 Gemini 页面集成,包括预览替换以及复制/下载拦截。src/cli/和bin/gwr.mjs提供了面向文件的本地自动化功能。skills/gemini-watermark-remover/提供了一个可分发的 Skill,它保持在 CLI 边界上,而不是直接导入仓库内部组件。src/sdk/仍然可用于高级/内部集成,但不再是主要的公共入口点。
限制
- 仅去除 Gemini 可见水印 (右下角的半透明徽标)
- 同时支持 图片 和 视频 水印去除——视频处理可通过在线工具完成
- 不消除不可见/隐写水印。 (了解更多关于 SynthID)
- 专为 Gemini 当前的可见水印模式设计 (已验证至 2026 年 4 月前的此仓库版本)
法律免责声明
本项目基于 MIT 许可证 发布。
去除水印可能因司法管辖区及图片预期用途而产生法律影响。用户需自行确保使用本工具符合适用法律、服务条款及知识产权。
作者不认可或鼓励滥用本工具进行版权侵权、虚假陈述或任何其他非法用途。
本软件按“原样”提供,不附有任何明示或暗示的保证。在任何情况下,作者均不对因使用本软件而产生的任何索赔、损害或其他责任负责。
致谢
本项目是 Allen Kuo(@allenk)所开发的 Gemini Watermark Tool 的 JavaScript 移植版本。
反向 Alpha 混合方法及校准水印掩码基于原作者 © 2024 AllenK (Kwyshell) 的作品,采用 MIT 许可证。


