| 图标 | 工具 | 说明 |
|---|---|---|
| 🗜️ | 图片压缩 | 批量压缩 JPG/PNG/WebP,可调质量,支持格式互转 |
| 🔁 | 图片格式转换 | 批量转换 JPEG/PNG/WebP/BMP/TIFF/GIF 六种格式 |
| 🧩 | 图片拼接 | 多张图片横向或纵向拼成一张,支持对齐设置 |
| 🖨️ | 图片转PDF | 多张图片合并为一个 PDF,支持拖拽排序 |
| 🔍 | 图片缩放 | 批量调整尺寸,支持按比例/宽度/高度/指定宽高 |
| 📚 | PDF合并 | 多个 PDF 合并为一个,支持拖拽调整顺序 |
| 📃 | PDF拆分 | 拆分 PDF 为图片或单页 PDF,支持自定义页数 |
| 🔂 | 文件去重 | 按内容 Hash 查找重复文件,支持预览和批量删除 |
- 🌙 深色/浅色主题 — 一键切换,自动记忆偏好
- 🖱️ 拖拽支持 — 多数工具支持直接拖拽文件到列表
- 📊 文件列表 — 统一的交互体验,支持添加/移除/排序/清空
- 📈 进度显示 — 实时显示处理进度和状态
- 🔌 完全离线 — 所有处理在本地完成,不上传任何数据
- 🧩 插件扩展 — 放入
plugins/目录即可自动加载
| 功能 | 截图 |
|---|---|
| 首页 | ![]() |
| 图片压缩 | ![]() |
| 图片格式转换 | ![]() |
| 图片拼接 | ![]() |
| 图片转PDF | ![]() |
| 图片缩放 | ![]() |
| PDF合并 | ![]() |
| PDF拆分 | ![]() |
| 文件去重 | ![]() |
| 设置 | ![]() |
pip install -r requirements.txt依赖包说明:
| 包 | 用途 |
|---|---|
| PyQt6 | GUI 框架 |
| Pillow (PIL) | 图片处理 |
| img2pdf | PDF 转换(首选) |
| PyMuPDF (fitz) | PDF 转换(备选) |
python main.py# 推荐使用 spec 文件打包(已包含所有必要模块)
pyinstaller toolbox.spec
# 使用 UPX 压缩减小体积
pyinstaller --upx-dir=/path/to/upx toolbox.spec
⚠️ 注意:必须使用toolbox.spec进行打包,直接运行pyinstaller main.py会导致动态加载的插件模块缺失。
- 点击左侧「图片压缩」
- 添加图片(支持多选和拖拽)
- 选择输出格式(保持原格式 / JPG / PNG / WebP)
- 调整压缩质量滑块(建议 70~85%)
- 点击「开始压缩」
- 点击左侧「图片格式转换」
- 添加图片,选择目标格式(JPEG / PNG / WebP / BMP / TIFF / GIF)
- 调整转换质量
- 点击「开始转换」
- 点击左侧「图片拼接」
- 添加图片(至少 2 张),调整顺序
- 选择拼接方向:横向 / 纵向
- 设置输出图片质量
- 点击「开始拼接」
- 点击左侧「图片转PDF」
- 添加图片(支持拖拽排序)
- 选择输出质量(高质量 / 标准 / 压缩)
- 选择输出文件路径
- 点击「开始转换」
- 点击左侧「图片缩放」
- 添加图片,选择缩放方式(百分比 / 宽度 / 高度 / 指定宽高)
- 设置缩放参数,勾选「保持宽高比」
- 点击「开始缩放」
- 点击左侧「PDF合并」
- 添加 PDF 文件(支持拖拽排序)
- 调整 PDF 顺序(上移 / 下移)
- 选择输出文件路径
- 点击「开始合并」
- 点击左侧「PDF拆分」
- 添加一个 PDF 文件
- 选择输出格式(单页 PDF / 图片)
- 设置拆分页数(单页 PDF 模式)或图片格式(图片模式)
- 点击「开始拆分」
- 点击左侧「文件去重」
- 选择要扫描的文件夹
- 选择去重规则(保留最新 / 保留最旧 / 手动选择)
- 点击「开始扫描」
- 查看重复文件组,勾选要删除的文件
- 点击「删除选中文件」并确认
工具箱支持插件扩展,将 Python 文件放入 plugins/ 目录即可自动加载。
新建 plugins/my_tool.py:
# -*- encoding: utf-8 -*-
"""
我的工具插件
"""
from toolbox import ToolPlugin, Card, AnimatedButton, Theme
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QLabel
class MyTool(ToolPlugin):
name = "我的工具"
description = "工具描述"
icon = "🔧"
def create_ui(self) -> QWidget:
"""创建工具界面"""
widget = QWidget()
layout = QVBoxLayout(widget)
layout.addWidget(QLabel("Hello, World!"))
return widget
def apply_theme(self, theme):
"""响应主题切换(可选)"""
pass在 config.py 的 PLUGIN_MODULES 中添加配置:
{
"name": "我的工具",
"icon": "🔧",
"description": "工具描述",
"order": 30, # 排序权重,越小越靠前
"module": "plugins.my_tool",
"class": "MyTool",
}| 文件 | 类名 | 功能 |
|---|---|---|
plugins/image_compressor.py |
ImageCompressor |
图片压缩 |
plugins/image_format_converter.py |
FormatConverter |
图片格式转换 |
plugins/image_stitcher.py |
ImageStitcher |
图片拼接 |
plugins/image_to_pdf.py |
ImageToPDF |
图片转 PDF |
plugins/image_scaler.py |
ImageScaler |
图片缩放 |
plugins/pdf_merger.py |
PDFMerger |
PDF 合并 |
plugins/pdf_splitter.py |
PDFSplitter |
PDF 拆分 |
plugins/file_deduplicator.py |
FileDeduplicator |
文件去重 |
应用配置集中在 config.py 文件中:
| 配置项 | 说明 |
|---|---|
APP_NAME, APP_VERSION |
应用名称和版本号 |
APP_DESCRIPTION, APP_COPYRIGHT |
应用描述和版权信息 |
APP_WEBSITE_URL |
官方网站链接 |
PLUGIN_MODULES |
插件列表(名称、图标、描述、排序) |
UI_CONFIG |
窗口大小、侧边栏宽度等 UI 设置 |
THEME_CONFIG |
主题相关配置 |
WELCOME_CONFIG |
欢迎页面文本内容 |
修改 config.py 即可自定义应用外观和信息,无需修改主程序代码。
- Python 3.8+
- Windows 系统(其他平台可修改 spec 后尝试)
# 1. 生成版本信息文件
python generate_version_info.py
# 2. 验证打包依赖
python verify_packaging.py
# 3. 打包为 EXE
pyinstaller toolbox.spec打包后的 EXE 文件位于 dist/ 目录下。
- 图片压缩(批量,可调质量)
- 图片格式转换(JPEG/PNG/WebP/BMP/TIFF/GIF)
- 图片拼接(横向/纵向)
- 图片转 PDF(多图合成)
- 图片缩放(百分比/指定宽高)
- PDF 合并(多文件合并)
- PDF 拆分(拆成图片或单页 PDF)
- 文件去重(按内容 Hash)
- 深色/浅色主题切换
- 插件自动发现和加载
- 图片批量水印(文字或图片水印)
- 图片批量旋转/翻转
- 图片批量裁剪
- 文件批量重命名(正则、序号、日期规则)
暂无
欢迎提交 PR 贡献新插件或功能!
本项目为开源项目,使用MIT协议,欢迎自由使用和贡献。
**工具箱** — 让文件处理更简单 🚀










