MCPcopy Create free account
hub / github.com/GargantuaX/gemini-watermark-remover

github.com/GargantuaX/gemini-watermark-remover @v1.0.28

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.28 ↗ · + Follow
4,579 symbols 13,064 edges 436 files 3 documented · 0% 4 cross-repo links updated 2d agov1.0.30 · 2026-07-16★ 4,92011 open issues

Browse by type

Functions 4,488 Types & classes 91
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

English

🔥 厌倦了 Gemini 水印?试试更强大的 GPT Image 2pilio.ai — 限时免费。

Gemini 去水印工具 — 无损去除 Gemini AI 图片水印

开源的 Gemini 水印去除工具,在已支持的 Gemini 导出图片上可提供高保真、可复现的去水印结果。基于纯 JavaScript 实现,使用数学精确的反向 Alpha 混合算法,而非 AI 修复。

🚀 想快速去除 Gemini 水印?直接使用在线 Gemini 去水印工具geminiwatermarkremover.io — 免费、无需安装,浏览器即可使用。

💡 Gemini 去不掉的水印?试试通用 AI 去水印工具:pilio.ai/image-watermark-remover

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

特性

  • 100% 本地处理 - 所有图片处理都在你的浏览器或本地环境中完成,不会上传到任何服务器
  • 数学精确 - 基于反向 Alpha 混合算法,而非 AI 修复模型
  • 自动检测 - 基于 Gemini 已知输出尺寸目录和局部锚点搜索,自动识别水印大小与位置
  • 灵活使用 - 在线工具快速上手、Chrome 插件或油猴脚本无缝集成 Gemini 页面、CLI 和 Skill 支持脚本化与自动化
  • 视频支持 - 支持去除 Gemini 生成视频中的水印,访问 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
  2. 拖拽或点击选择带水印的 Gemini 图片
  3. 图片会自动开始处理,移除水印
  4. 下载处理后的图片

在线视频去水印工具(新功能!)

针对带有可见水印的 Gemini 生成视频

  1. 浏览器打开 geminiwatermarkremover.io/video
  2. 拖拽或点击选择带水印的 Gemini 生成视频
  3. 工具会自动检测并去除视频中的水印
  4. 下载处理后的视频

说明:视频去水印处理完全在浏览器本地完成,不会上传任何文件到服务器。

Chrome 插件

适合不想安装油猴脚本、但希望在 Gemini 页面里实时自动处理预览图、复制和下载动作的用户。

  1. 打开 Chrome Web Store 上的 Gemini Watermark Remover
  2. 点击“添加至 Chrome”,并确认安装
  3. 打开 Gemini 页面,插件会自动处理可支持的 Gemini 图片

插件弹窗里提供了“在 Gemini 中自动去除”开关。如果遇到 Gemini 页面卡顿、异常或需要排查问题,可以先关闭开关再刷新页面。

通过 Chrome Web Store 安装后,插件会自动更新。如果你的网络无法稳定访问 Chrome Web Store,仍可从 GitHub Releases 或官网备用下载入口获取同版本已校验 zip(gemini-watermark-remover-extension-v*.zip),并按手动加载未打包插件的方式安装。

油猴脚本

  1. 安装油猴插件(如 Tampermonkey 或 Greasemonkey)
  2. 打开 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 安装可执行:
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>

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 SDK 的消费者不需要它。如果你在自己的项目里使用 CLI 文件处理,请同时安装 sharp

pnpm add sharp

去不掉的水印?

本工具专门针对 Gemini 可见水印(右下角半透明 Logo)。如果你的图片水印不属于 Gemini 已知格式,或需要去除其他类型的图片水印,可以试试通用 AI 去水印工具:

👉 pilio.ai/image-watermark-remover

开发者预览

仓库里仍保留了一个本地内部预览页 /dev-preview.html,用于单图对比、复制和下载结果验证。

  • 这是保留给仓库本地调试使用的内部页面,不是公开产品站点。
  • 根路径 / 现在只负责把用户引导到项目官网、userscript 安装地址和内部预览页。
  • 对外使用时,应优先使用官网或 userscript,而不是这个本地预览 harness。

开发

# 安装依赖
pnpm install

# 开发构建
pnpm dev

# 生产构建
pnpm build

# 本地静态服务
pnpm serve

说明:

  • 根路径 / 现在是轻量入口页,只负责引导到官网、userscript 安装地址和仓库内保留的内部预览页。
  • 内部浏览器预览页位于 /dev-preview.html,当前保留为中文静态单图对比 harness,用于本地算法/UI 调试,不再作为对外开发者预览站,也不再维护多语言和主题切换。
  • pnpm dev / pnpm serve 仍会提供 userscript、probe 页面和这些静态资产。

macOS 下调试油猴固定 Profile

如果要走仓库内置的固定 profile 调试流,macOS 下建议直接用:

# 构建最新 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,但更建议将它视为高级或内部集成接口:

import {
  createWatermarkEngine,
  removeWatermarkFromImage,
  removeWatermarkFromImageData,
  removeWatermarkFromImageDataSync,
} from '@pilio/gemini-watermark-remover';

如果你已经拿到了 ImageData,优先用纯数据接口:

const result = await removeWatermarkFromImageData(imageData, {
  adaptiveMode: 'auto',
});

console.log(result.meta.decisionTier);

如果你在浏览器里拿到的是 HTMLImageElementHTMLCanvasElement,可直接用图像接口:

const { canvas, meta } = await removeWatermarkFromImage(imageElement);
document.body.append(canvas);
console.log(meta.applied, meta.decisionTier);

如果要批量处理,建议复用同一个 engine 实例,让 alpha map 保持缓存:

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,
});

运行要求

网页与油猴脚本

  • 现代 Chrome / Firefox / Safari / Edge 浏览器
  • ES Modules
  • Canvas API
  • Async/Await
  • TypedArray(Float32ArrayUint8ClampedArray
  • 如果要使用网页上的“复制结果”按钮,还需要 navigator.clipboard.write(...)ClipboardItem

CLI 与 Skill

  • 能运行本包的本地 Node.js 环境
  • 使用默认 CLI 文件解码/编码路径时需要安装 sharp
  • 可读写本地输入/输出路径的文件系统环境
  • 在仓库内可直接使用:
node bin/gwr.mjs remove <input> --output <file>
node skills/gemini-watermark-remover/scripts/run.mjs remove <input> --output <file>
  • 分发后的 Skill 则依赖本地环境能够执行打包后的 gwr CLI 边界

测试

# 运行全部测试
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,本地发版清单见 RELEASE_zh.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)
  • 同时支持图片视频水印去除 — 视频处理请使用在线工具
  • 无法去除隐形或隐写水印。(了解更多关于 SynthID 的信息)
  • 针对 Gemini 当前的可见水印模式设计(本仓库验证范围截至 2026 年 4 月)

免责声明

本项目采用 MIT License 发布。

根据您所在的司法管辖区及图像的实际用途,移除水印的行为可能具有潜在的法律影响。用户需自行确保其使用行为符合适用法律、相关服务条款以及知识产权规定,并对此承担全部责任。

作者不纵容也不鼓励将本工具用于侵犯版权、虚假陈述或任何其他非法用途。

本软件按“原样”提供,不提供任何形式(无论是明示或暗示)的保证。在任何情况下,作者均不对因使用本软件而产生的任何索赔、损害或其他责任承担任何义务。

致谢

本项目是 Gemini Watermark Tool 的 JavaScript 移植版本,原作者 Allen Kuo (@allenk)

反向 Alpha 混合算法和用于校准的水印图像基于原作者的工作 © 2024 AllenK (Kwyshell),采用 MIT 许可证

相关链接

许可证

MIT License

Extension points exported contracts — how you extend this code

browse all types & interfaces →

Core symbols most depended-on inside this repo

browse all functions →

Shape

Function 4,416
Method 72
Class 58
Interface 33

Languages

TypeScript100%

Modules by API surface

public/onnxruntime/ort-wasm-simd-threaded.asyncify.mjs257 symbols
public/onnxruntime/ort-wasm-simd-threaded.jsep.mjs209 symbols
public/onnxruntime/ort-wasm-simd-threaded.mjs149 symbols
public/onnxruntime/ort-wasm-simd-threaded.js149 symbols
src/shared/pageImageReplacement.js112 symbols
src/core/candidateSelector.js92 symbols
src/core/watermarkProcessor.js82 symbols
scripts/create-release-readiness-report.js61 symbols
src/userscript/downloadHook.js60 symbols
scripts/probe-metric-48-96-96-boundary-repair.js45 symbols
src/video-app.js44 symbols
scripts/verify-video-delivery-bundle.js43 symbols

Dependencies from manifests, versioned

@pilio/gemini-watermark-removerfile:../.. · 1×
@types/node24.6.0 · 1×
esbuild0.24.0 · 1×
mediabunny1.46.0 · 1×
onnxruntime-web1.26.0 · 1×
playwright1.58.2 · 1×
sharp0.34.5 · 1×
typescript5.9.3 · 1×

For agents

$ claude mcp add gemini-watermark-remover \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page