# imageedit_gui **Repository Path**: lovegitee/imageedit_gui ## Basic Information - **Project Name**: imageedit_gui - **Description**: 图片去水印工具是一个基于 Python + PySide6 开发的桌面端图片去水印工具,核心能力是通过 LaMa 图像修复模型对图片中被 mask 标记的区域进行智能补全,从而实现单张图片或批量图片的水印去除。 项目当前版本:V1.0.1 如果你的电脑性能尚可的话, 推荐默认选中 LAMA 模型 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-08 - **Last Updated**: 2026-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图片去水印工具 - 基于 LaMa 的批量高质去水印工具 `图片去水印工具` 是一个基于 Python + PySide6 开发的桌面端图片去水印工具,核心能力是通过 LaMa 图像修复模型对图片中被 mask 标记的区域进行智能补全,从而实现单张图片或批量图片的水印去除。 项目当前版本:`V1.0.1` 如果你的电脑性能尚可的话, 推荐默认选中 LAMA 模型 ## 项目简介 本工具面向需要批量处理商品图、素材图、运营图等图片水印场景的用户,提供可视化操作界面,支持图片队列管理、手动画笔绘制 mask、单张预览处理、批量去水印、处理结果缩略图预览、统一输出设置等功能。 主要特点: - 桌面端 GUI 操作,无需命令行处理图片; - 支持多图片队列管理; - 支持手动绘制去水印区域 mask; - 支持当前图片单独处理; - 支持批量去除水印; - 支持处理后缩略图预览; - 支持双击缩略图查看放大效果; - 支持应用设置独立配置; - 支持输出目录和文件命名策略配置; - 支持日志开关配置; - 支持限制图片队列最大承载数量。 ## 软件截图 ### 主界面 ![主界面](ScreenShout/main-window.png) ### 图片队列与 mask 绘制 ![图片队列与 mask 绘制](ScreenShout/mask-drawing.png) ### 批量去水印设置 ![批量去水印设置](ScreenShout/batch-settings.png) ### 应用设置界面 ![应用设置界面](ScreenShout/app-settings.png) ### 去水印效果预览 ![去水印效果预览](ScreenShout/result-preview.png) ## 功能说明 ### 1. 图片队列管理 左侧 `imageQueueList` 用于管理待处理图片队列。 支持功能: - 添加多张图片; - 拖拽图片到导入区域; - 点击图片 item 切换选中 / 未选中; - 双击图片 item 弹出删除确认; - 删除单张图片; - 清空整个队列; - 统计当前队列图片数量; - 统计当前选中图片数量。 图片队列最大承载量可在应用设置中配置,默认值为 `50`,允许范围为 `1 - 99999`。 ### 2. mask 绘制 中间预览区用于显示当前图片,并支持在图片上绘制 mask。 当前支持: - 画笔绘制 mask; - 调整画笔大小; - 调整 mask 扩张参数; - 调整羽化参数; - 清除 mask; - 支持不同图片独立保存 mask; - 支持复用当前图片 mask 到批量处理任务。 mask 用于告诉 LaMa 模型哪些区域需要被修复。 ### 3. 处理当前图片 点击 `处理当前图片` 后,程序会对当前预览图片执行去水印处理。 处理逻辑: 1. 保存当前图片的 mask; 2. 读取当前原图; 3. 将 mask 转换为模型可识别格式; 4. 调用 LaMa 模型执行图像修复; 5. 将处理结果写入 `.temp` 临时目录; 6. 在下方缩略图区域显示处理后的结果。 同一张图片重复处理时,`.temp` 下对应的临时文件会被覆盖。 ### 4. 批量去水印 点击 `开始批量去除水印` 后,程序会弹出确认对话框,展示本次批量任务的信息: - 选择了多少张图片; - 使用的模型; - 遮罩来源; - 处理后的图片保存位置。 确认后开始执行批量任务。 批量处理支持的适用范围: - 处理全部队列图片; - 只处理选中图片; - 只处理未完成图片。 当前已实现的遮罩来源: - 复用当前图片 mask 到全部图片; - 每张图片使用独立 mask。 批量处理过程中,窗口底部状态栏左侧会显示当前正在处理的图片,例如: ```text 当前正在处理 abc.jpg 当前正在处理 eftg.jpg ``` ### 5. 缩略图预览 处理完成后的图片会显示在底部 `thumbnailList` 中。 支持功能: - 显示处理结果缩略图; - 缩略图文本使用短文件名显示; - 鼠标悬停显示完整临时图片路径; - 双击缩略图弹出大图预览窗口; - 大图预览窗口支持 Ctrl + 鼠标滚轮缩放; - 大图预览窗口支持鼠标拖动画面。 ### 6. 图片导出 点击 `导出图片` 后,会将 `.temp` 中已经处理完成的图片导出到配置的输出目录。 支持的输出目录策略: 1. 保存到原目录下的 `output` 文件夹; 2. 保存到统一输出文件夹; 3. 覆盖原文件前自动备份。 支持的文件命名策略: 1. 原文件名 + `_clean`; 2. 保持原文件名; 3. 按序号重命名。 导出完成后会清理 `.temp` 临时目录。 ### 7. 应用设置 点击应用设置按钮后,会弹出应用设置对话框。 当前支持配置: - 输出目录策略; - 文件命名策略; - 统一输出目录; - 是否启动日志记录; - 图片队列最大承载量。 日志记录默认开启。关闭后不会创建新的日志文件。 ### 8. 临时文件管理 程序会在 exe 同级目录下创建 `.temp` 临时目录,用于保存处理后的临时图片。 清理规则: - 程序启动时清理 `.temp`; - 导出图片后清理 `.temp`; - 程序退出时清理 `.temp`; - 删除队列图片时同步删除对应临时图片。 ## 项目结构 ```text imageedit_gui/ ├─ gui/ │ └─ imageedit_gui/ │ ├─ mainwindow.ui # 主窗口 Qt Designer UI │ └─ appsettings.ui # 应用设置 Qt Designer UI ├─ imgs/ # 图片和图标资源 ├─ models/ │ └─ big-lama.pt # LaMa 模型文件 ├─ py/ │ ├─ MainWindow.py # 主窗口业务逻辑 │ ├─ MainWindow_ex.py # 主窗口扩展事件逻辑 │ ├─ LamaEngine.py # LaMa 模型封装 │ ├─ ImageDialog.py # 图片预览弹窗 │ ├─ LoggerManager.py # 日志管理 │ ├─ SettingsManager.py # 设置管理 │ ├─ SingleInstanceManager.py # 单实例管理 │ └─ utils.py # 通用工具函数 ├─ py_gui/ │ ├─ mainwindow_ui.py # mainwindow.ui 生成文件 │ └─ appsettings_ui.py # appsettings.ui 生成文件 ├─ ScreenShout/ # README 截图目录,需手动补充 ├─ requirements.txt # 当前开发环境依赖记录 └─ README.md ``` ## 环境要求 推荐环境: - Windows 10 / Windows 11; - Python 3.10 或兼容版本; - CPU 或 GPU 均可运行,具体性能取决于模型推理环境; - 已安装项目依赖; - `models/big-lama.pt` 模型文件存在。 主要依赖: - PySide6; - OpenCV; - NumPy; - Pillow; - Torch; - simple-lama-inpainting / IOPaint 相关依赖。 ## 安装依赖 如果使用虚拟环境,建议: ```powershell python -m venv .venv .\.venv\Scripts\activate ``` 然后安装依赖。 > 注意:当前 `requirements.txt` 是开发环境的依赖清单导出,不是精简后的生产依赖文件。如果安装失败,建议根据报错逐个安装核心依赖,或重新整理标准格式的 requirements 文件。 常用核心依赖示例: ```powershell pip install PySide6 opencv-python numpy Pillow torch torchvision simple-lama-inpainting loguru ``` ## 启动项目 在项目根目录执行: ```powershell .\.venv\Scripts\python.exe .\py\MainWindow.py ``` 或在 IDE 中直接运行: ```text py/MainWindow.py ``` ## UI 文件生成 如果修改了 Qt Designer 的 `.ui` 文件,需要重新生成 Python UI 文件。 主窗口: ```powershell .\.venv\Scripts\pyside6-uic.exe "gui\imageedit_gui\mainwindow.ui" -o "py_gui\mainwindow_ui.py" ``` 应用设置窗口: ```powershell .\.venv\Scripts\pyside6-uic.exe "gui\imageedit_gui\appsettings.ui" -o "py_gui\appsettings_ui.py" ``` ## 使用流程 ### 单张图片去水印 1. 点击添加图片,或将图片拖入导入区域; 2. 在左侧图片队列中点击目标图片; 3. 在预览图上用画笔涂抹需要去除的水印区域; 4. 点击 `处理当前图片`; 5. 在底部缩略图区域查看处理结果; 6. 双击缩略图可查看放大效果; 7. 点击 `导出图片` 保存处理结果。 ### 批量图片去水印 1. 添加多张图片到队列; 2. 根据需要选中部分图片; 3. 绘制当前图片 mask,或分别为每张图片绘制独立 mask; 4. 在右侧设置批量处理策略; 5. 点击 `开始批量去除水印`; 6. 确认批量任务信息; 7. 等待批量处理完成; 8. 处理结果会自动保存到应用设置中的输出位置。 ## 输出说明 默认输出方式为: ```text 原图片所在目录/output/ ``` 例如: ```text D:/images/demo.jpg ``` 处理后可能输出为: ```text D:/images/output/demo_clean.jpg ``` 如果选择覆盖原文件,程序会先备份原文件: ```text demo.jpg.bak ``` 如果备份文件已存在,会继续生成: ```text demo.jpg.bak1 demo.jpg.bak2 ``` ## 注意事项 - 首次处理图片时,模型加载可能会比较慢; - mask 区域越准确,修复效果通常越好; - 批量复用当前 mask 时,适合图片尺寸和水印位置相近的场景; - 如果每张图片水印位置不同,建议使用独立 mask; - 处理大图或大量图片时,耗时会明显增加; - `.temp` 是临时目录,不建议手动保存其中的文件作为最终结果; - 导出或程序退出后 `.temp` 可能会被清理。 ## 版权信息 版权所有 © 2026 去水印 - 基于 LaMa 批量高质去水印 更多项目请访问: # git地址: https://gitee.com/lovegitee/imageedit_gui