Photo Splitter — 照片分包工具
将大量照片按指定大小拆分成多个 zip 压缩包,方便分批上传、传输或存档。
新增 v1.1.0:支持在拆分前批量压缩照片到指定大小(每张不超过 N KB)。
快速指令模板
把 ~/Pictures/旅行照片 这个文件夹里的照片拆成 100MB 一个包
把这些照片按 50MB 一个包拆分,并且每张照片压缩到 40KB 以内
把这个压缩包 ~/Downloads/photos.zip 按 50MB 一个包拆开
把 ~/Desktop/相册 里的照片分成 200MB 的包,每张不超过 30KB,输出到 ~/Desktop/result
功能说明
核心功能
- 输入支持:文件夹(自动递归扫描子文件夹)或 .zip 压缩包
- 照片格式:jpg/jpeg/png/gif/bmp/tiff/webp/heic/heif/avif/svg/raw 等
- 分包规则:每个 zip 包不超过指定大小(硬限制),单张超大会单独打包并提示
- 压缩包内容:只有照片文件,扁平结构(不含原文件夹层级)
- 命名规则:
photos_part001.zip、photos_part002.zip...(纯英文+数字) - 输出位置:在输入路径旁边自动创建
原文件夹名_split_100MB_photo40KB子文件夹
v1.1.0 新增:批量压缩
- 批量压缩:在拆分前,将所有照片压缩到指定大小以内(每张不超过 N KB)
- 智能压缩策略:先降低 JPEG 质量,仍不够小则缩放尺寸
- 原图保护:压缩后的照片保存到独立临时目录,不覆盖原图
- 格式支持:主要压缩 jpg/jpeg/png/webp 等常见格式,不支持的格式自动跳过
使用方式
方式一:让 WorkBuddy 直接运行(推荐)
直接说自然语言指令即可,例如:
- "帮我把 ~/Pictures/vacation 的照片按 150MB 一个包拆分"
- "把这些照片拆成 50MB 的包,并且每张压缩到 40KB 以内"
- "把这个 zip 包拆成 50MB 一个包,每张照片不超过 30KB"
方式二:命令行直接运行
# 基础用法(无压缩)
python3 ~/.workbuddy/skills/photo-splitter/scripts/split_photos.py <输入路径> <每包大小MB>
# 带压缩用法
python3 ~/.workbuddy/skills/photo-splitter/scripts/split_photos.py <输入路径> <每包大小MB> <每张最大KB>
# 指定输出目录
python3 ~/.workbuddy/skills/photo-splitter/scripts/split_photos.py <输入路径> <每包大小MB> <每张最大KB> <输出目录>
# 示例
python3 ~/.workbuddy/skills/photo-splitter/scripts/split_photos.py ~/Pictures/旅行 100
python3 ~/.workbuddy/skills/photo-splitter/scripts/split_photos.py ~/Pictures/旅行 100 40
python3 ~/.workbuddy/skills/photo-splitter/scripts/split_photos.py ~/Downloads/photos.zip 50 40
python3 ~/.workbuddy/skills/photo-splitter/scripts/split_photos.py ~/Pictures/album 200 40 ~/Desktop/output
参数说明
| 参数 | 必选 | 说明 |
|---|---|---|
| 输入路径 | 是 | 文件夹路径或 .zip 文件路径 |
| 每包大小(MB) | 是 | 每个压缩包的大小上限(MB),支持小数 |
| 每张最大(KB) | 否 | 拆分前先将每张照片压缩到此大小以内(KB) |
| 输出目录 | 否 | 输出目录路径(不指定则自动生成) |
常见问题 FAQ
Q1: 压缩照片需要安装什么吗?
A: 需要安装 Python Pillow 库。运行:pip install Pillow 或 pip3 install Pillow。未安装时工具会跳过压缩并提示。
Q2: 压缩后照片质量会变差吗?
A: 会有一定损失。工具采用"先降质量、后缩放"策略,在保证不超过目标大小的前提下尽量保持清晰度。建议先用少量照片测试效果。
Q3: 为什么有些照片压缩后仍然超过目标大小?
A: 极少数情况下(如极小尺寸的高复杂度图片),工具可能无法压缩到目标大小。这类照片会被单独提示,但仍在分包范围内。
Q4: 压缩支持 HEIC/RAW 等格式吗?
A: 目前主要支持 jpg/jpeg/png/gif/bmp/tiff/webp/ico。HEIC/RAW 等格式会跳过压缩,直接进行分包。
Q5: 压缩后的照片保存在哪里?
A: 压缩后的照片保存在输出目录同级位置的 *_compressed 文件夹中,方便你检查压缩效果。确认无误后可手动删除。
Q6: 原图会被修改或删除吗?
A: 不会。工具只会读取原图,所有输出(压缩后照片、zip 包)都保存在新的输出目录中。
Q7: 同名照片会互相覆盖吗?
A: 不会。同名照片会自动加路径前缀区分(如 sub1_photo_01.jpg)。
Q8: 单张照片超过包大小会怎样?
A: 会单独打包,并在终端打印警告提示。
Q9: 输出目录已经存在怎么办?
A: 工具会自动使用已存在的目录,不会覆盖已有文件。如需重新生成,请先删除输出目录。
Q10: 支持哪些操作系统?
A: 支持 macOS、Windows 和 Linux,只需要有 Python 3.6+ 环境即可。
注意事项
- 需要 Python 3.6+(macOS 自带)
- 压缩功能需要 Pillow 库:
pip install Pillow - 不会修改或删除原始照片
- 同名照片会自动加路径前缀区分
- 单张照片超过包大小时会单独打包并提示
- 压缩后的照片会保留在
*_compressed目录,确认后可手动删除
版本历史
| 版本 | 日期 | 说明 |
|---|---|---|
| v1.1.0 | 2026-06-21 | 新增批量压缩功能,增加 FAQ |
| v1.0.0 | 2026-06-20 | 初始版本 |