本项目是基于开源项目 semi-utils 迁移而来的PyQt5 GUI版本。原项目是一个命令行图片处理工具,主要用于为照片添加水印、阴影、白边等效果,支持多种布局和自定义设置。
原项目信息:
- 项目名称:Semi-Utils
- 作者:leslievan
- 开源协议:Apache 2.0 License
- 项目介绍:https://www.bilibili.com/video/BV11A411U7Kn
- 项目地址:https://github.com/leslievan/semi-utils
- 项目介绍(博客):https://lsvm.xyz/2023/02/semi-utils-intro/
- 从命令行迁移到图形界面:将原有的命令行交互模式完全替换为PyQt5图形用户界面
- 标签页设计:采用三标签页设计(基本设置、高级设置、图片处理)提供更直观的操作体验
- 实时配置预览:所有设置更改实时生效,无需手动保存
- 多线程处理:图片处理在后台线程进行,界面保持响应
- 进度显示:实时显示处理进度和状态信息
- 错误处理:完善的错误提示和日志记录机制
- 文件选择:图形化的目录选择对话框
- 模块化结构:将核心功能模块迁移到
core/entity和core/enums目录 - 配置管理:统一的配置管理系统
- 处理器链:灵活的图片处理器链设计
- 操作系统:Windows 7/8/10/11
- Python版本:Python 3.7+
- 依赖包:详见
requirements.txt
pip install -r requirements.txt- 从exiftool官网下载最新版本的exiftool
- 解压到项目根目录下
- 将解压后的
exiftool(-k).exe文件复制到项目根目录下 - 将"exiftool(-k).exe"重命名为"exiftool.exe"
python main.py- 建议使用Python 3.8+版本
- 如遇到QFluentWidgets安装问题,可以尝试:
pip install PyQt-Fluent-Widgets - 确保系统已安装Microsoft Visual C++ Redistributable
- 布局类型:选择图片处理布局(水印、正方形、背景模糊等)
- Logo启用:控制是否在图片上添加Logo
- 四个角落文字:分别设置左上、右上、左下、右下角的文字内容
- 支持的文字类型:相机型号、镜头信息、拍摄参数、日期时间、自定义文字等
- 自定义文字:设置自定义文字内容,可在文字位置中选择使用
- 阴影效果:为图片添加阴影效果
- 白边效果:为图片添加白色边框
- 按比例填充:保持原始图片比例进行填充
- 等效焦距:使用等效焦距信息
- 图片质量:设置输出图片的质量(1-100)
- 输入目录:选择包含待处理图片的目录
- 输出目录:选择处理后的图片保存目录
- 开始处理:启动图片处理流程
- 进度显示:实时显示处理进度
- 处理日志:显示详细的处理日志和错误信息
- 水印布局:带Logo的水印布局
- 正方形布局:正方形裁剪布局
- 简单布局:基本处理布局
- 背景模糊:背景模糊效果
- 纯白边框:纯白色边框布局
- 相机型号
- 相机品牌
- 镜头信息
- 拍摄参数
- 日期时间
- 自定义文字
- 地理位置信息
- 文件名
- 无文字
- 阴影效果:为图片添加逼真的阴影
- 白边效果:添加白色边框增强视觉效果
- 比例保持:保持原始图片比例
- 高质量输出:可调节的输出质量
- 支持常见的图片格式(JPG、PNG等)
- 建议使用高质量原始图片
- 处理前请备份重要图片
- 输出目录会自动创建
- 处理后的图片会保持原文件名
- 建议使用空目录作为输出目录
- 大量图片处理可能需要较长时间
- 建议分批处理大量图片
- 处理过程中不要关闭程序
- 处理失败的文件会在日志中显示错误信息
- 单个文件处理失败不会影响其他文件
- 建议检查错误日志进行问题排查
问题:ImportError: DLL load failed
解决方案:安装Microsoft Visual C++ Redistributable
问题:界面字体过小
解决方案:程序已优化字体大小,如仍有问题可手动调整配置文件中的font_size和bold_font_size值
问题:多标签页操作复杂 解决方案:v2.2版本已合并为一个界面,左侧设置,右侧处理,操作更直观
问题:日志区域占用空间,信息不直观 解决方案:v2.2版本已删除日志显示,改为错误弹窗提示,界面更简洁
- core/entity:实体类定义(图片容器、处理器链等)
- core/enums:枚举常量定义
- ui:PyQt5用户界面
- utils:工具函数
采用责任链模式,支持灵活添加各种图片处理器:
- 阴影处理器
- 水印处理器
- 白边处理器
- 比例填充处理器
Copyleft/
├── core/ # 核心模块
│ ├── entity/ # 实体类(图片容器、处理器链、配置管理等)
│ └── enums/ # 枚举常量
├── fonts/ # 字体资源文件
├── logos/ # Logo图片资源
├── config.yaml # 主配置文件
├── main.py # 程序入口点(整合了PyQt5主窗口界面)
├── init.py # 初始化配置和菜单系统
├── utils.py # 工具函数库
└── requirements.txt # Python依赖包列表
- 添加新的布局类型:在
init.py中定义新的LayoutItem - 添加新的处理器:继承
ImageProcessor基类 - 修改界面:编辑
ui/main_window.py文件
- PiggyWu981
- GitHub:@PiggyWu981
- Bilibili:@PiggyWu981
如果这个项目对你有帮助,欢迎通过给我们买杯咖啡支持我们的工作!
- ⭐ Star 这个项目
- 📝 提交 Issue 或 Pull Request
- 📢 分享给更多有需要的人
- 优化界面布局和用户体验,改进设置项的组织结构
- 增强配置管理功能,支持更多自定义选项
- 修复已知bug,提升程序稳定性和性能
- 改进错误处理机制,提供更详细的错误信息
- 添加并行处理功能:支持同时处理最多5张图片,大大提高了程序运行效率
- 优化资源利用率:使用线程池管理工作线程,充分利用系统资源
- 改进错误处理机制:单个图片处理失败不会影响整体处理流程
- 添加进度显示功能,包括进度条和详细统计信息
- 在处理界面右下角新增处理统计区域
- 显示内容包括:排队数、正在处理数、已处理数和每秒处理数
- 简化UI界面,合并三个标签页为一个
- 删除日志显示,改为错误弹窗提示
- 优化界面布局,左侧设置,右侧处理
- 提升用户体验和操作效率
- 修复布局切换和文字位置设置的bug
- 优化字体大小显示效果
- 改进配置管理系统
- 增强错误处理和稳定性
- 完成PyQt5 GUI迁移
- 实现图形化用户界面
- 添加多线程处理支持
- 完善错误处理机制
- 命令行交互模式
- 基本图片处理功能
- 配置管理系统
