[English](README.md) > 🔥 厌倦了 Gemini 水印?试试更强大的 **GPT Image 2**:[pilio.ai](https://pilio.ai) — 限时免费。 # Gemini 去水印工具 — 无损去除 Gemini AI 图片水印 开源的 **Gemini 水印去除工具**,在已支持的 Gemini 导出图片上可提供高保真、可复现的去水印结果。基于纯 JavaScript 实现,使用数学精确的反向 Alpha 混合算法,而非 AI 修复。 > **🚀 想快速去除 Gemini 水印?直接使用`在线 Gemini 去水印工具`:[geminiwatermarkremover.io](https://geminiwatermarkremover.io/)** — 免费、无需安装,浏览器即可使用。 > > 💡 Gemini 去不掉的水印?试试通用 AI 去水印工具:[pilio.ai/image-watermark-remover](https://pilio.ai/image-watermark-remover)

在线工具  视频去水印  Chrome 插件  油猴脚本  通用去水印

## 特性 - ✅ **100% 本地处理** - 所有图片处理都在你的浏览器或本地环境中完成,不会上传到任何服务器 - ✅ **数学精确** - 基于反向 Alpha 混合算法,而非 AI 修复模型 - ✅ **自动检测** - 基于 Gemini 已知输出尺寸目录和局部锚点搜索,自动识别水印大小与位置 - ✅ **灵活使用** - 在线工具快速上手、Chrome 插件或油猴脚本无缝集成 Gemini 页面、CLI 和 Skill 支持脚本化与自动化 - ✅ **视频支持** - 支持去除 Gemini 生成视频中的水印,访问 [geminiwatermarkremover.io/video](https://geminiwatermarkremover.io/video) 即可使用 - ✅ **跨平台** - 支持现代浏览器(Chrome、Firefox、Safari、Edge)和 Node.js 环境 ## Gemini 去水印效果示例
点击查看/收起示例 | 原图 | 去水印后 | | :---: | :----: | | | |
## ⚠️ 使用需注意 > [!WARNING] > **使用此工具产生的风险由用户自行承担** > > 本工具涉及对图像数据的修改。尽管在设计上力求处理结果的可靠性,但由于以下因素,仍可能产生非预期的处理结果: > - Gemini 水印实现方式的更新或变动 > - 图像文件损坏或使用了非标准格式 > - 测试案例未能覆盖的边界情况 > > 作者对任何形式的数据丢失、图像损坏或非预期的修改结果不承担法律责任。使用本工具即代表您已了解并接受上述风险。 > [!NOTE] > 另请注意:使用此工具需禁用 Canvas 指纹防护扩展(如 Canvas Fingerprint Defender),否则可能会导致处理结果错误。 https://github.com/GargantuaX/gemini-watermark-remover/issues/3 ## 如何去除 Gemini 水印 ### 在线 Gemini 去水印工具(推荐) 所有用户均可使用 — 最简单快速的 Gemini 图片去水印方式: 1. 浏览器打开 **[geminiwatermarkremover.io](https://geminiwatermarkremover.io/)** 2. 拖拽或点击选择带水印的 Gemini 图片 3. 图片会自动开始处理,移除水印 4. 下载处理后的图片 ### 在线视频去水印工具(新功能!) 针对带有可见水印的 Gemini 生成**视频**: 1. 浏览器打开 **[geminiwatermarkremover.io/video](https://geminiwatermarkremover.io/video)** 2. 拖拽或点击选择带水印的 Gemini 生成视频 3. 工具会自动检测并去除视频中的水印 4. 下载处理后的视频 > **说明**:视频去水印处理完全在浏览器本地完成,不会上传任何文件到服务器。 ### Chrome 插件 适合不想安装油猴脚本、但希望在 Gemini 页面里实时自动处理预览图、复制和下载动作的用户。 1. 打开 [Chrome Web Store 上的 Gemini Watermark Remover](https://chromewebstore.google.com/detail/gemini-watermark-remover/cjlmnfcfnofnglkphbcdclbpimdjkmdf) 2. 点击“添加至 Chrome”,并确认安装 3. 打开 Gemini 页面,插件会自动处理可支持的 Gemini 图片 插件弹窗里提供了“在 Gemini 中自动去除”开关。如果遇到 Gemini 页面卡顿、异常或需要排查问题,可以先关闭开关再刷新页面。 通过 Chrome Web Store 安装后,插件会自动更新。如果你的网络无法稳定访问 Chrome Web Store,仍可从 [GitHub Releases](https://github.com/GargantuaX/gemini-watermark-remover/releases/latest) 或官网备用下载入口获取同版本已校验 zip(`gemini-watermark-remover-extension-v*.zip`),并按手动加载未打包插件的方式安装。 ### 油猴脚本 1. 安装油猴插件(如 Tampermonkey 或 Greasemonkey) 2. 打开 [gemini-watermark-remover.user.js](https://geminiwatermarkremover.io/userscript/gemini-watermark-remover.user.js) 3. 脚本会自动安装到浏览器中 4. 打开 Gemini 对话页面 5. 页面里可处理的 Gemini 预览图会在处理后直接替换显示 6. 点击原生“复制图片”或“下载图片”时,脚本也会在下载流里自动返回去水印结果 当前油猴模式的边界是: - 不注入页面按钮 - 不提供弹窗 UI 或批量操作入口 - 当源图可获取时,会同时处理页面预览图和原生复制/下载链路 - 处理预览图时会保留原图显示,并叠加克制的 `Processing...` 状态遮罩 - 如果预览图处理失败,不会把页面原图隐藏掉或替换成空白 ### Skill 面向使用 AI 编程 agent 的开发者: - `skills/gemini-watermark-remover/` 包含打包好的 Skill,AI agent 可自动发现并调用。 - 用 `skills.sh` 安装可执行: ```bash pnpm dlx skills add GargantuaX/gemini-watermark-remover --skill gemini-watermark-remover ``` - 只有在你的本地环境确实需要时,再额外加上 `--agent`、`--yes`、`--copy` 这类参数。 - 用法: ```bash node skills/gemini-watermark-remover/scripts/run.mjs remove --output ``` - 详见 [`SKILL.md`](skills/gemini-watermark-remover/SKILL.md)。 ### CLI 面向脚本化、CI、批量处理等自动化场景,可直接调用 CLI: ```bash # 仓库内直接运行 node bin/gwr.mjs remove --output # 全局安装后使用 gwr remove [--output | --out-dir ] [--overwrite] [--json] ``` 如果本机未全局安装 `gwr`,可直接使用: ```bash pnpm dlx @pilio/gemini-watermark-remover remove --output ``` 默认 CLI 文件解码/编码路径使用 `sharp`。只使用浏览器或 `ImageData` SDK 的消费者不需要它。如果你在自己的项目里使用 CLI 文件处理,请同时安装 `sharp`: ```bash pnpm add sharp ``` ### 去不掉的水印? 本工具专门针对 Gemini 可见水印(右下角半透明 Logo)。如果你的图片水印不属于 Gemini 已知格式,或需要去除其他类型的图片水印,可以试试通用 AI 去水印工具: 👉 **[pilio.ai/image-watermark-remover](https://pilio.ai/image-watermark-remover)** ### 开发者预览 仓库里仍保留了一个本地内部预览页 `/dev-preview.html`,用于单图对比、复制和下载结果验证。 - 这是保留给仓库本地调试使用的内部页面,不是公开产品站点。 - 根路径 `/` 现在只负责把用户引导到项目官网、userscript 安装地址和内部预览页。 - 对外使用时,应优先使用官网或 userscript,而不是这个本地预览 harness。 ## 开发 ```bash # 安装依赖 pnpm install # 开发构建 pnpm dev # 生产构建 pnpm build # 本地静态服务 pnpm serve ``` 说明: - 根路径 `/` 现在是轻量入口页,只负责引导到官网、userscript 安装地址和仓库内保留的内部预览页。 - 内部浏览器预览页位于 `/dev-preview.html`,当前保留为中文静态单图对比 harness,用于本地算法/UI 调试,不再作为对外开发者预览站,也不再维护多语言和主题切换。 - `pnpm dev` / `pnpm serve` 仍会提供 userscript、probe 页面和这些静态资产。 ### macOS 下调试油猴固定 Profile 如果要走仓库内置的固定 profile 调试流,macOS 下建议直接用: ```bash # 构建最新 userscript pnpm build # 如有需要,启动本地产物服务 pnpm dev # 打开固定 Chrome profile,并直达 Gemini ./scripts/open-fixed-chrome-profile.sh --url https://gemini.google.com/app ``` 说明: - 固定 profile 目录是 `.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/` 开始探测;如果端口被占用,会自动递增 - 如果你参考的是之前某次调试记录,端口可能不是 `4173`;以当前 `pnpm dev` 输出为准 ## SDK 用法(高级 / 内部) 包根仍然提供 SDK,但更建议将它视为高级或内部集成接口: ```javascript import { createWatermarkEngine, removeWatermarkFromImage, removeWatermarkFromImageData, removeWatermarkFromImageDataSync, } from '@pilio/gemini-watermark-remover'; ``` 如果你已经拿到了 `ImageData`,优先用纯数据接口: ```javascript const result = await removeWatermarkFromImageData(imageData, { adaptiveMode: 'auto', }); console.log(result.meta.decisionTier); ``` 如果你在浏览器里拿到的是 `HTMLImageElement` 或 `HTMLCanvasElement`,可直接用图像接口: ```javascript const { canvas, meta } = await removeWatermarkFromImage(imageElement); document.body.append(canvas); console.log(meta.applied, meta.decisionTier); ``` 如果要批量处理,建议复用同一个 engine 实例,让 alpha map 保持缓存: ```javascript const engine = await createWatermarkEngine(); const first = await removeWatermarkFromImageData(imageDataA, { engine }); const second = await removeWatermarkFromImageData(imageDataB, { engine }); ``` 如果你在 Node.js 里接入,可使用专门的子入口,并注入自己的解码/编码器: ```javascript import { removeWatermarkFromBuffer } from '@pilio/gemini-watermark-remover/node'; const result = await removeWatermarkFromBuffer(inputBuffer, { mimeType: 'image/png', decodeImageData: yourDecodeFn, encodeImageData: yourEncodeFn, }); ``` ## 运行要求 ### 网页与油猴脚本 - 现代 Chrome / Firefox / Safari / Edge 浏览器 - ES Modules - Canvas API - Async/Await - TypedArray(`Float32Array`、`Uint8ClampedArray`) - 如果要使用网页上的“复制结果”按钮,还需要 `navigator.clipboard.write(...)` 和 `ClipboardItem` ### CLI 与 Skill - 能运行本包的本地 Node.js 环境 - 使用默认 CLI 文件解码/编码路径时需要安装 `sharp` - 可读写本地输入/输出路径的文件系统环境 - 在仓库内可直接使用: ```bash node bin/gwr.mjs remove --output node skills/gemini-watermark-remover/scripts/run.mjs remove --output ``` - 分发后的 Skill 则依赖本地环境能够执行打包后的 `gwr` CLI 边界 ## 测试 ```bash # 运行全部测试 pnpm test ``` 回归测试会使用 `src/assets/samples/` 下的源样本。 源样本文件应保留在 git 中。 这些样本的命名与保留规则见 `src/assets/samples/README.md`。 复杂图预览/下载验证说明见 `docs/complex-figure-verification-checklist.md`。 本地生成到 `src/assets/samples/fix/` 下的文件只是人工回归快照,不进入 git,也不作为 CI 必须存在的基线。 ## 发版说明 版本变更请看 [CHANGELOG_zh.md](CHANGELOG_zh.md),本地发版清单见 [RELEASE_zh.md](RELEASE_zh.md)。最新发布收尾记录见 [docs/release-1.0.29-post-release.md](docs/release-1.0.29-post-release.md)。 ## Gemini 水印去除算法原理 ### Gemini 添加水印的方式 Gemini 通过以下方式添加水印: $$watermarked = \alpha \cdot logo + (1 - \alpha) \cdot original$$ 其中: - `watermarked`: 带水印的像素值 - `α`: Alpha 通道值 (0.0-1.0) - `logo`: 水印 logo 的颜色值(白色 = 255) - `original`: 原始像素值 ### 反向求解移除水印 为了去除水印,可以反向求解如下: $$original = \frac{watermarked - \alpha \cdot logo}{1 - \alpha}$$ 通过在纯色背景上捕获水印,我们可以重建 Alpha 通道,然后应用反向公式恢复原始图像 ## 水印检测规则 引擎使用分层检测来定位和验证水印: 1. **尺寸目录匹配** — 将图片尺寸与 Gemini 已知输出尺寸对比,预测水印大小和位置。 2. **局部锚点搜索** — 在预测的水印区域周围扫描实际像素数据,精确定位水印位置。 3. **恢复验证** — 在应用去水印前确认检测到的水印是真实的,避免误判。 默认水印配置: | 条件 | 水印尺寸 | 右边距 | 下边距 | |------------|---------|--------|--------| | 较大的 Gemini 输出 | 96×96 | 64px | 64px | | 较小的 Gemini 输出 | 48×48 | 32px | 32px | ## 项目结构 ``` gemini-watermark-remover/ ├── bin/ # 发布后的 CLI 入口(`gwr`) ├── public/ │ ├── index.html # 官网 / userscript / 内部预览入口页 │ ├── dev-preview.html # 保留给仓库本地调试的内部浏览器预览页 │ └── tampermonkey-worker-probe.* # userscript / worker 调试探针页 ├── skills/ │ └── gemini-watermark-remover/ # 可分发的 agent Skill bundle ├── src/ │ ├── assets/ # 校准资源与回归样本 │ ├── cli/ # CLI 参数解析与文件工作流 │ ├── core/ # 去水印核心算法、评分与恢复逻辑 │ ├── page/ # Gemini 页面侧运行时 │ ├── sdk/ # 高级 / 内部 SDK 接口 │ ├── shared/ # DOM、blob、session 等共享辅助模块 │ ├── userscript/ # userscript 入口与浏览器钩子 │ ├── workers/ # worker 运行时 │ ├── app.js # 内部单图预览 harness 入口 │ └── utils.js # 内部预览页通用浏览器工具 ├── tests/ # 单元、回归、打包与 smoke 测试 ├── 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 bundle,并且严格停留在 CLI 边界,不直接导入仓库内部实现。 - `src/sdk/` 仍保留给高级 / 内部集成使用,但不再是对外主入口。 --- ## 局限性 - 只去除了 **Gemini 可见的水印**(即右下角的半透明 Logo) - 同时支持**图片**和**视频**水印去除 — 视频处理请使用[在线工具](https://geminiwatermarkremover.io/video) - 无法去除隐形或隐写水印。[(了解更多关于 SynthID 的信息)](https://support.google.com/gemini/answer/16722517) - 针对 Gemini 当前的可见水印模式设计(本仓库验证范围截至 2026 年 4 月) ## 免责声明 本项目采用 **MIT License** 发布。 根据您所在的司法管辖区及图像的实际用途,移除水印的行为可能具有潜在的法律影响。用户需自行确保其使用行为符合适用法律、相关服务条款以及知识产权规定,并对此承担全部责任。 作者不纵容也不鼓励将本工具用于侵犯版权、虚假陈述或任何其他非法用途。 **本软件按“原样”提供,不提供任何形式(无论是明示或暗示)的保证。在任何情况下,作者均不对因使用本软件而产生的任何索赔、损害或其他责任承担任何义务。** ## 致谢 本项目是 [Gemini Watermark Tool](https://github.com/allenk/GeminiWatermarkTool) 的 JavaScript 移植版本,原作者 Allen Kuo ([@allenk](https://github.com/allenk)) 反向 Alpha 混合算法和用于校准的水印图像基于原作者的工作 © 2024 AllenK (Kwyshell),采用 MIT 许可证 ## 相关链接 - [Gemini Watermark Tool](https://github.com/allenk/GeminiWatermarkTool) - [算法原理说明](https://allenkuo.medium.com/removing-gemini-ai-watermarks-a-deep-dive-into-reverse-alpha-blending-bbbd83af2a3f) ## 许可证 [MIT License](./LICENSE)