一个基于 Python + Tkinter 的轻量桌面工具,适合做这几件事:
- 压缩图片
- 压缩普通文件
- 计算文件哈希(
MD5 / SHA1 / SHA256) - MD5 改写(在不影响文件内容显示的前提下修改 MD5)
- 支持
JPG / PNG / WEBP / BMP / TIFF - 支持直接选择整个图片文件夹
- 支持递归扫描子文件夹批量压缩
- 压缩后保留原文件名
- 可选输出格式:
保持原格式 / JPEG / WEBP / PNG - 有损格式支持质量调整
- 支持尺寸调整:保持原尺寸、按百分比缩放、按最长边限制、自定义宽高
- 自定义宽高支持非等比输入,程序会自动拉伸图片
- 自定义宽高模式下可勾选“锁定宽高比”
- PNG 支持
标准 PNG和Tinify-like PNG两种模式 - 单图模式输出到源文件目录下的
compressed_output - 文件夹模式输出到所选目录下的
compressed_output,并保留原目录层级 - 内置缩略图预览,默认展示前几张图片
- 支持直接选择整个文件夹
- 支持递归扫描子文件夹后统一打包
- 支持
zip - 支持
tar.gz - 支持
tar.xz - 支持单文件
gz - 文件夹模式会保留归档内的目录结构
- 支持解压
zip、tar.gz、tar.xz和单文件gz - 解压默认输出到安全目录,并会拒绝压缩包内的不安全路径
- 计算
MD5 - 计算
SHA1 - 计算
SHA256
- 在不影响文件内容显示的前提下修改文件的 MD5 值
- 通过在文件副本末尾追加随机字节实现
- 支持批量处理和文件夹递归扫描
- 输出到
md5_modified文件夹,保留原目录结构 - 处理日志显示每个文件的原始 MD5 和新 MD5
- 深色头部 + 状态卡片
- 页签式功能分区
- 可滚动日志输出
- 底部状态栏显示当前进度
- 支持拖拽文件或文件夹到窗口
requirements.txt中已包含tkinterdnd2- 首次使用前如有需要,请重新安装依赖
- 使用
imagequant做 256 色调色板量化 - 默认关闭抖动,更接近已测试的 Tinify PNG 样本
- 量化质量区间固定为
40~90 - 若检测到
zopfli,会继续做一轮 PNG 深度优化 - 若依赖缺失,会自动回退到标准 PNG 压缩
先安装依赖:
python3 -m pip install -r requirements.txt启动程序:
python3 app.py项目已补充 PyInstaller 打包配置,可直接生成独立的 macOS .app,并额外生成 .dmg 安装包。应用图标默认取自项目根目录的 icon.png。
执行:
chmod +x build_macos.sh
./build_macos.sh打包完成后,应用位于:
dist/CompressImage.app同时会生成安装包:
dist/CompressImage.dmg启动方式:
open dist/CompressImage.app- 更好的拖拽高亮效果
- 图片尺寸调整
- WebP 无损 / 有损切换
- 导出哈希清单到文本文件
- 打包成 macOS / Windows 桌面应用