Skip to content

一个功能强大的图片和视频批量压缩工具,支持GPU硬件加速,提供现代化的GUI界面与web界面。

License

Notifications You must be signed in to change notification settings

gitllk/file-compressor

Repository files navigation

批量文件压缩工具 v2.0

版本概述

v2.0是模块化重构版本,采用了更清晰的代码架构,并添加了暂停/恢复、断点续传、压缩预览和历史记录等新功能。

新功能特性

1. 暂停/恢复功能

  • 压缩过程中可随时暂停
  • 暂停后可以恢复继续压缩
  • 暂停时间不计入总压缩时间

2. 断点续传

  • 压缩中断后自动保存断点数据
  • 重新启动程序时可选择继续未完成的压缩
  • 自动跳过已完成的文件

3. 压缩预览

  • 可选择单个文件进行测试压缩
  • 预览压缩效果和压缩率
  • 输出文件保存到临时目录

4. 历史记录

  • 自动保存每次压缩的统计信息
  • 查看历史压缩记录
  • 查看详细压缩统计和配置信息
  • 支持清空历史记录

模块化架构

核心模块

  1. config_manager.py - 配置管理模块

    • 统一管理所有配置项
    • 配置验证和默认值处理
    • 配置文件读写
  2. file_processor.py - 文件处理模块

    • 路径规范化和验证
    • 权限检查
    • 磁盘空间检查
    • 文件大小估算
  3. image_compressor.py - 图片压缩模块

    • 图片压缩处理
    • 支持JPG, PNG, BMP等格式
    • 自动调整尺寸
  4. video_compressor.py - 视频压缩模块

    • CPU编码支持
    • AMD GPU加速(AMF编码器)
    • Nvidia GPU加速(NVENC编码器)
    • 自动回退机制
  5. compression_history.py - 历史记录模块

    • 压缩记录保存
    • 历史记录查询
    • 历史记录管理
  6. compress_tool.py - 主程序

    • UI界面
    • 业务流程控制
    • 事件处理

功能对比

功能 v1.0 v2.0
模块化架构
暂停/恢复
断点续传
压缩预览
历史记录
GPU加速 AMD + Nvidia AMD + Nvidia
批量操作
文件过滤

使用说明

基本操作

  1. 选择源文件夹和目标文件夹

    • 点击"浏览"按钮选择文件夹
    • 支持Ctrl+O(源文件夹)、Ctrl+D(目标文件夹)
  2. 设置压缩参数

    • 照片质量:0-100
    • 视频CRF:18-28
    • 视频预设:ultrafast 到 veryslow
    • 编码模式:CPU / AMD GPU / Nvidia GPU
  3. 开始压缩

    • 点击"开始压缩"按钮或按Ctrl+R
    • 可随时暂停(Ctrl+P)或停止(Ctrl+T)
    • 暂停后可恢复(Ctrl+U)

高级功能

暂停/恢复

  • 压缩过程中点击"暂停"按钮
  • 暂停后点击"恢复"继续压缩
  • 暂停时间不计入总压缩时间

断点续传

  • 压缩中断后会自动保存断点数据
  • 重新启动程序时会提示是否继续
  • 选择"是"可继续未完成的压缩

压缩预览

  • 点击"压缩预览"按钮
  • 选择一个文件进行测试压缩
  • 查看压缩效果和压缩率

历史记录

  • 点击"历史记录"按钮查看
  • 查看每次压缩的详细统计
  • 支持查看详情和清空历史

快捷键

  • Ctrl+O - 选择源文件夹
  • Ctrl+D - 选择目标文件夹
  • Ctrl+E - 打开输出文件夹
  • Ctrl+S - 保存设置
  • F5 - 刷新文件列表
  • Ctrl+R - 开始压缩
  • Ctrl+P - 暂停压缩
  • Ctrl+U - 恢复压缩
  • Ctrl+T - 停止压缩
  • Ctrl+Q - 退出程序

技术改进

代码架构

  • 单一职责原则:每个模块只负责一个功能
  • 依赖注入:模块间通过接口交互
  • 易于测试:模块可独立测试

性能优化

  • 后台线程扫描文件,避免UI阻塞
  • 批量更新UI,提升响应速度
  • 索引映射优化文件查找

用户体验

  • 非阻塞进度显示,集成在主界面
  • 实时统计信息更新
  • 详细的操作提示和错误信息

文件结构

v2/
├── __init__.py              # 包初始化
├── compress_tool.py         # 主程序
├── config_manager.py        # 配置管理
├── file_processor.py        # 文件处理
├── image_compressor.py      # 图片压缩
├── video_compressor.py      # 视频压缩
├── compression_history.py   # 历史记录
├── ui_components.py         # UI组件(可选)
├── README.md                # 说明文档
├── config.ini               # 配置文件(自动生成)
├── checkpoint.json          # 断点数据(自动生成)
└── history/                 # 历史记录目录(自动创建)
    └── compression_history.json

依赖项

必需依赖

  • Python 3.7+
  • tkinter(Python标准库)
  • Pillow (PIL) >= 9.0.0
  • FFmpeg(用于视频压缩,程序支持自动检测和下载)
  • configparser(Python标准库)

可选依赖

  • opencv-python >= 4.5.0(用于视频预览功能,可选)

FFmpeg安装说明

Windows平台

  • 程序启动时会自动检测FFmpeg
  • 如果未找到,会提示并支持从官网自动下载
  • 下载的文件会自动解压到bin目录

其他平台

  • 请手动安装FFmpeg
  • 添加到系统PATH环境变量中
  • 或配置FFmpeg路径到程序中

安装说明

快速开始

  1. 克隆仓库(或下载代码)

    git clone <repository-url>
    cd <repository-name>/v2
  2. 安装Python依赖

    pip install -r requirements.txt
  3. 运行程序

    python compress_tool.py
  4. FFmpeg安装

    • Windows:程序会自动检测并提供下载选项
    • 其他平台:请手动安装FFmpeg并添加到PATH

注意事项

  1. FFmpeg路径
    • Windows:程序支持自动下载到bin目录
    • 其他平台:确保FFmpeg可执行文件在系统PATH中或正确配置路径
  2. GPU驱动:使用GPU加速需要安装对应的显卡驱动
  3. 磁盘空间:压缩前会自动检查磁盘空间,确保有足够空间
  4. 断点数据:断点数据保存在checkpoint.json,不要手动删除正在使用的断点文件
  5. 临时文件:预览功能会创建临时文件,关闭预览窗口后会自动清理

更新日志

v2.0 (2024-11)

  • ✨ 模块化重构,代码更清晰
  • ✨ 添加暂停/恢复功能
  • ✨ 添加断点续传支持
  • ✨ 添加压缩预览功能(图片左右对比,视频信息显示)
  • ✨ 添加历史记录功能
  • ✨ 改进UI,进度显示集成在主界面,现代化配色
  • ✨ FFmpeg自动检测和下载功能(Windows平台)
  • ✨ 内存优化,使用__slots__减少内存占用
  • ✨ 优化文件列表显示,支持排除文件夹
  • ✨ 自动排除非媒体文件选项
  • 🐛 修复已知问题
  • 📝 完善文档

许可证

Copyright © 2024-2025 批量文件压缩工具 保留所有权利

本软件仅供个人学习和非商业用途使用。

About

一个功能强大的图片和视频批量压缩工具,支持GPU硬件加速,提供现代化的GUI界面与web界面。

Resources

License

Stars

Watchers

Forks

Packages

No packages published