LeafSort 是一款基于 Python 开发的图片管理工具,专注于高效管理、智能整理和批量处理各类图片文件。软件支持多种图片格式的快速浏览和管理,提供按时间、地点、设备、类型等多维度自动分类整理功能,基于 MD5 哈希算法进行文件去重,支持 EXIF 元数据的查看和编辑,以及批量重命名和地理编码等操作。
软件功能
图片管理
支持多种图片格式的快速浏览和管理,包括 JPEG、PNG、WebP、HEIC、HEIF 等主流格式,可以快速加载和显示大量图片文件。
智能整理
提供智能整理功能,可以根据图片的拍摄时间、GPS 位置、拍摄设备、文件类型等多个维度自动分类整理文件。用户可以自定义分类规则和文件命名规则,软件会自动读取图片的 EXIF 元数据,构建目标路径和文件名,执行文件复制或移动操作。
文件去重
基于 MD5 哈希算法精确识别完全相同的文件,支持两阶段筛选机制:第一阶段按文件大小分组快速排除不重复的文件,第二阶段只对相同大小的文件计算 MD5,大幅减少计算量。使用线程池并发计算 MD5,支持缓存已计算的哈希值,提高处理效率。
EXIF 编辑
支持查看和修改图片的 EXIF 元数据信息,包括标题、作者、评分、相机品牌、型号、镜头信息等。软件内置了相机品牌型号数据库和镜头型号数据库,可以自动匹配镜头信息。支持 JPEG、PNG、WebP 等多种格式的 EXIF 读写,对于复杂格式使用 exiftool 作为备选方案。
地理编码
自动将 GPS 坐标转换为地址信息,使用高德地图 API 进行逆地理编码。软件会缓存地理编码结果,避免重复 API 调用,支持批量处理相同位置的文件,提高处理效率。
多格式支持
除了图片格式,还支持视频、音频、文档、压缩包等多种文件类型的管理和处理。
技术架构
开发环境
- Python 3.11+
- PyQt6 6.5.0+
- Pillow 11.3.0+
- opencv-python 4.8.0+
- scikit-image 0.24.0+
- numpy 1.24.0+
- piexif 1.1.3+
- exifread 3.0.0+
- pillow-heif 0.16.0+
- requests 2.31.0+
- playwright 1.40.0+
架构设计
软件采用三层架构设计,包括用户界面层、业务逻辑层和数据处理层。用户界面层基于 PyQt6 构建现代化 GUI 界面,业务逻辑层处理核心业务逻辑和功能实现,数据处理层负责文件操作、元数据处理和配置管理。
核心模块
- App.py: 应用程序入口,负责初始化 QApplication、创建主窗口实例、设置全局异常处理和单实例检测
- main_window.py: 主窗口控制器,管理所有功能页面,处理窗口事件,管理系统托盘图标
- add_folder.py: 文件夹管理页面,管理源文件夹和目标文件夹的选择,验证文件夹路径的有效性
- smart_arrange.py: 智能整理业务逻辑管理器,管理智能整理的 UI 交互,收集用户配置
- smart_arrange_thread.py: 智能整理工作线程,在独立线程中执行整理任务,避免阻塞 UI
- write_exif.py: EXIF 编辑业务逻辑管理器,管理 EXIF 编辑的 UI 交互,收集用户配置
- write_exif_thread.py: EXIF 写入工作线程,在独立线程中执行 EXIF 写入任务
- file_deduplication.py: 文件去重业务逻辑管理器,管理文件去重的 UI 交互
- file_deduplication_thread.py: 文件去重工作线程,扫描文件并计算 MD5,删除重复文件
- common.py: 通用工具库,提供资源路径管理、文件类型检测、媒体类型检测、地理编码服务等功能
- config_manager.py: 配置管理器,线程安全的配置读写操作,管理地理编码缓存和 API 调用限流
- update_dialog.py: 更新检查对话框,检查 GitHub 上的最新版本
线程模型
软件使用 Qt 的信号槽机制进行线程通信,主线程处理所有 UI 交互和响应,工作线程执行耗时的文件操作任务。所有工作线程都继承自 QThread,支持随时停止操作,保持 UI 响应流畅。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...
