Skip to content

bruc3van/Gemini-Remover-Mini

Repository files navigation

香蕉去水印 - 微信小程序版

这是基于 gemini-watermark-remover 核心算法的微信小程序版本,可以在微信中方便地移除 Nano Banana 生成图片的水印。

相比原项目,本小程序版本增加了以下特性:

  • 🚀 性能优化:区域处理算法,速度提升 10-75 倍,支持 8K 超大图片
  • 📦 批量处理:一次处理多张图片,提高工作效率
  • 🔍 滑动对比:实时对比处理前后效果
  • 📊 进度显示:实时显示处理进度和状态

界面预览

小程序界面截图

从左到右:选择图片 → 批量处理 → 滑动对比效果

功能特点

  • 无损移除:采用反向 Alpha 混合算法,数学方法精确还原原图
  • 极速处理:区域优化算法,毫秒级完成处理(4K 图片仅需 40ms)
  • 超大图片支持:可处理 8K 及以上超大图片,不压缩不崩溃
  • 批量处理:支持一次选择多张图片(最多 9 张)进行批量处理
  • 实时对比:滑动分屏对比器,直观查看处理前后效果
  • 进度显示:实时显示批量处理进度和完成状态
  • 批量保存:支持一键保存所有处理完成的图片到相册
  • 本地处理:所有处理在本地完成,保护隐私安全
  • 智能识别:自动检测并支持 48×48 和 96×96 两种水印尺寸
  • 极低内存:优化后内存占用降低 100-7000 倍

快速开始

1. 安装微信开发者工具

微信官方网站下载并安装微信开发者工具。

2. 导入项目

  1. 打开微信开发者工具
  2. 点击"导入项目"
  3. 选择本项目的根目录作为项目目录
  4. 填写 AppID(可以使用测试号)
  5. 点击"导入"

3. 运行项目

  1. 点击工具栏的"编译"按钮
  2. 在模拟器中查看效果
  3. 或使用"预览"功能在真机上测试

使用方法

在小程序中使用

  1. 选择图片

    • 点击"选择图片"按钮
    • 可一次选择 1-9 张带有 Nano Banana 水印的图片
    • 系统会自动检测每张图片的尺寸和水印大小
  2. 处理水印

    • 单张处理:点击图片卡片上的"处理"按钮
    • 批量处理:点击底部"批量处理"按钮一次处理所有图片
    • 实时查看处理进度和完成状态
  3. 对比效果

    • 处理完成后,使用滑动对比器查看处理前后效果
    • 左右滑动分割线,直观对比原图和处理后的图片
  4. 保存图片

    • 单张保存:长按图片选择保存
    • 批量保存:点击"批量保存"按钮一键保存所有已处理的图片
    • 首次使用需要授权相册访问权限

项目结构

Gemini-Remover-Mini/
├── app.js                      # 小程序入口
├── app.json                    # 小程序配置
├── app.wxss                    # 全局样式
├── pages/
│   └── index/                  # 主页面
│       ├── index.wxml          # 页面结构
│       ├── index.wxss          # 页面样式
│       ├── index.js            # 页面逻辑
│       └── index.json          # 页面配置
├── utils/                      # 工具模块
│   ├── blendModes.js          # 反向 Alpha 混合算法
│   ├── alphaMap.js            # Alpha 图计算
│   └── watermarkEngine.js     # 水印引擎
├── assets/                     # 资源文件
│   ├── bg_48.png              # 48×48 水印背景
│   └── bg_96.png              # 96×96 水印背景
├── docs/                       # 文档目录
├── project.config.json         # 项目配置
├── README.md                   # 项目说明
├── DEVELOPMENT.md              # 开发指南
└── PERFORMANCE.md              # 性能优化说明

核心算法说明

反向 Alpha 混合原理

Nano Banana 使用标准 Alpha 混合公式添加水印:

watermarked = α × logo + (1 - α) × original

通过数学反推,我们可以恢复原图:

original = (watermarked - α × logo) / (1 - α)

其中:

  • watermarked:带水印的像素值
  • α:Alpha 通道值(0.0 - 1.0)
  • logo:水印颜色值(白色 = 255)
  • original:原始像素值

水印检测规则

根据 Nano Banana 的水印规则:

  • 图片宽高都 > 1024px:使用 96×96 水印,边距 64px
  • 其他情况:使用 48×48 水印,边距 32px
  • 水印位置:右下角

技术栈

  • 微信小程序框架
  • Canvas 2D API
  • TypedArray(Float32Array)
  • ES6+ JavaScript

兼容性要求

微信小程序基础库版本:3.12.1

建议使用微信版本:≥ 7.0.0

开发文档

详细的开发指南请参考 DEVELOPMENT.md,包含:

  • 开发环境设置
  • Canvas API 使用方法
  • 核心模块详细说明
  • 调试技巧和常见问题解决

常见问题

1. Canvas 初始化失败

问题:提示"Canvas 未初始化"

解决

  • 确保页面已完全加载
  • 检查 WXML 中是否正确添加了 Canvas 元素
  • 在真机上测试而非仅在模拟器

2. 图片处理失败

问题:点击"移除水印"后报错

解决

  • 确认图片确实带有 Nano Banana 水印
  • 检查图片格式(支持 JPEG、PNG、WebP)
  • 确保图片尺寸不要过大(建议 < 4096×4096)

3. 保存图片无权限

问题:保存时提示需要授权

解决

  • 首次使用会请求相册权限,点击"允许"
  • 如果误点"拒绝",点击"去设置"重新授权
  • 在设置中找到小程序,开启"保存到相册"权限

4. 水印未完全移除

问题:处理后仍有轻微痕迹

原因

  • 图片经过压缩导致精度损失
  • 图片本身不是 Nano Banana 原图
  • 图片已经过其他编辑
  • 图片多次经由 Nano Banana 编辑,存在双重水印

建议

  • 使用 Nano Banana 直接导出的原图
  • 避免使用经过压缩或编辑的图片

性能优化

核心优化:区域处理

本项目采用只处理水印区域的优化策略,相比处理整张图片:

  • 内存占用降低 100-7000 倍:4096×4096 图片从 67MB 降至 36KB
  • 处理速度提升 10-75 倍:大图处理从 3 秒降至 40 毫秒
  • 支持超大图片:8192×8192 等超大图片也可流畅处理,不会崩溃

性能表现

图片尺寸 处理时间 内存占用
512×512 ~5ms 9KB
1024×1024 ~10ms 9KB
2048×2048 ~20ms 36KB
4096×4096 ~40ms 36KB
8192×8192 ~80ms 36KB

其他优化

  1. Alpha 图缓存:已处理的 Alpha 图会缓存,避免重复计算
  2. 离屏渲染:使用离屏 Canvas 处理,不影响 UI
  3. 异步处理:图像处理采用异步方式,不阻塞主线程
  4. 噪点过滤:跳过极小 Alpha 值,减少不必要的计算
  5. 设备性能检测:根据设备性能自动调整动画效果

详细的性能优化说明请参考 PERFORMANCE.md

隐私保护

  • 本地处理:所有图像处理在设备本地完成
  • 不上传数据:图片不会上传到任何服务器
  • 不保存数据:处理后的图片仅保存在用户相册

许可证

本项目遵循原项目的开源许可证。

致谢

本项目基于 gemini-watermark-remover 核心算法开发,感谢原作者 @journey-ad 的开源贡献。

About

基于 js 的微信小程序端 Gemini AI 图像无损去水印工具

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors