Skip to content

Repository files navigation

crop_tool

English README | 中文

专为"一大批照片、每张要裁的位置都不一样"而生的批量裁剪 / 矫正工具。

你有一整个文件夹的翻拍照片——证书、奖状、证件、白板、幻灯片、票据、试卷……每张的角度和位置都不同,还要按指定区域把内容抠正、摆平。用普通工具做这件事,要么慢,要么根本做不了。crop_tool 就是来解决这个痛点的:逐张精准框选,人主导、机器帮贴准,键盘驱动一路到底,上百张也不卡。


界面预览

逐张框选:点四角定位裁剪区域,磁吸自动贴准边角

处理界面:逐张框选与磁吸辅助

透视矫正后的成品效果与处理界面总览

效果预览:矫正后的成品与三栏界面


它解决的问题

真实场景:需要把大量位置各不相同的翻拍照片,按人工指定的区域逐张裁剪、摆正、归档。市面工具在这件事上都不称手:

工具类型 典型代表 局限
扫描类 App CamScanner / Microsoft Lens / Adobe Scan 追求全自动,对“人工指定区域且每张位置都不同”的场景经常答非所问,批量处理困难
通用修图 / 批量裁剪 美图秀秀、WPS 图片处理 只能做统一裁剪或逐张手动拖框,几百张下来极其耗时
批量裁剪软件(一个框套整个文件夹) 各类脚本/工具 只适合固定机位;每张位置不同就完全用不了

crop_tool 的取舍很明确:不追求全自动(全自动对"人工指定区域"这件事天然不靠谱),而是把逐张手动定位的效率做到极致——你依然是决策者,工具负责让每一次落点又快又准,让整个流程零摩擦。

适用场景

  • 📜 证书 / 奖状 / 证件翻拍整理:每张角度位置都不同,需逐张抠正
  • 🖼️ 会议 / 活动照片、白板 / 投影幻灯片翻拍归档
  • 📄 文档 / 试卷 / 票据翻拍去背景、摆平、统一成册
  • 📊 任何"一批照片,每张都要单独框选指定区域"的整理工作

核心优势

  1. 逐张精准框选,而非一框套全部 —— 每张都能按自己的内容单独定位,这是批量工具做不到的。
  2. 半自动辅助,降低手动难度(都可开关,只当"起点"不替你做主):
    • 自动吸边(磁吸):落点自动吸附到附近真实边角,点不准也贴得准。
    • 自动框选(D 键):一键识别边框摆好四角,再拖拽微调。
    • 沿用上张选区:同机位连拍时,新图自动带入上一张选区作起点。
    • 批量套用(A 键):标好一张,一键套用到本文件夹其余同机位图片。
  3. 键盘驱动的零摩擦流程Enter 保存后自动跳到下一张未处理;中途关掉再打开,自动恢复进度(已处理的自动打勾)。
  4. 真实比例透视矫正:按你所选四边形的真实边长输出,保留原始比例、不强行拉伸。
  5. 上百张依然流畅:按需加载 + 后台缩略图,翻页、保存、跳转顺滑不卡。
  6. 一站式:裁剪 + 水平矫正 + 导出 PPT / PDF / Word,一个工具搞定。
  7. 免安装:Windows 用户下载解压即用,无需 Python 环境。

下载使用(免安装版)

普通用户无需安装 Python,直接下载即可使用:

  1. 前往 Releases 页面
  2. 下载最新的压缩包(当前为 crop_tool-v2.6.zip
  3. 解压到任意目录
  4. 双击 crop_tool.exe 运行
  5. 点击「选择图片文件夹」,选中待处理的图片文件夹即可开始

操作流程

  1. 「选择图片文件夹」载入图片(左侧缩略图列表)
  2. 点击左侧缩略图选择要处理的图片
  3. 选择模式:裁剪 [1](四点透视)或 矫正 [2](两点摆平)
  4. 按顶部提示条在画布上点标记点(裁剪:左上→右上→右下→左下)
  5. Enter 保存,自动跳到下一张未处理;结果实时出现在右侧「已处理结果」
  6. 全部处理完,可一键导出 PPT / PDF / Word

处理结果保存在所选文件夹下的 crop_tool_已处理/ 子目录中,保持原有子文件夹结构;文件在按 Enter 时即写入磁盘。退出时可选择「保存并退出」或「不保存并退出(删除本次生成的成品)」。

辅助开关(动作栏下方一行)

开关 默认 作用
自动吸边 裁剪落点自动吸附到附近真实边角
沿用上张选区 切到下一张时自动带入上一张选区作起点

快捷键

功能 功能
Enter 保存并跳到下一张未处理 S 跳过当前
B 上一张 N 跳过整个文件夹
R 重画(清除标记点) A 批量套用到本文件夹剩余
P 粘贴上次标记点 D 自动框选(识别边框)
1 / 2 裁剪 / 矫正模式 Ctrl+Z / Ctrl+Y 撤销 / 重做
方向键 微调选中点(Shift 为 10px) 滚轮 / + / - / 0 缩放 / 复位
空格 + 拖拽 或 中键拖拽 平移画布 Esc / Q 返回原图 / 退出

开发者运行

git clone https://github.com/Naraku215/crop_tool.git
cd crop_tool

python -m venv .venv
.venv\Scripts\activate        # Windows
# source .venv/bin/activate   # Linux/macOS

pip install -r requirements.txt
python gui.py                 # 启动 GUI(推荐)

命令行辅助工具(格式转换 / 文件夹对账 / 导出):

python main.py

目录结构

crop_tool/
├── gui.py             # GUI 界面入口(主入口,推荐)
├── main.py            # 命令行入口(格式转换 / 对账 / 导出)
├── crop_tool.py       # 四点透视裁剪 + 磁吸 + 自动框选算法
├── level.py           # 两点水平矫正算法
├── export.py          # 统一导出模块(PPT / PDF / Word)
├── trans_png.py       # 格式转换(任意格式 -> PNG)
├── check_folders.py   # 文件夹对账检查
├── utils.py           # 共享工具(扫描、排序、读写图片)
├── config.py          # 集中配置(尺寸、格式等参数)
├── build.bat          # PyInstaller 打包脚本
├── requirements.txt   # Python 依赖
├── LICENSE            # MIT 开源协议
└── README.md

各模块说明

透视裁剪(crop_tool.py

点击 4 个角点(左上→右上→右下→左下)做透视矫正。默认按所选区域真实边长输出,保留原始比例、不拉伸。内置 snap_corner(磁性吸边)与 detect_quad(自动识别四边形作起点)。

水平矫正(level.py

在图上点一条应为水平的线(左端→右端),自动计算倾斜角并旋转摆平、去黑边,实时预览。

导出(export.py

格式 说明
PPT 16:9 宽屏,每张图按自身比例居中等比放置(不拉伸、不裁切),每个子文件夹一个 .pptx
PDF Pillow 原生生成,每个子文件夹一个 .pdf
Word 横向页面,每张图一页,每个子文件夹一个 .docx

独立运行:

python export.py <input_dir> <output_dir> [ppt|pdf|word|all]

配置(config.py

参数 说明 默认值
TARGET_SIZE 裁剪固定目标尺寸(仅显式指定时使用;GUI 默认按真实比例) (1920, 1080)
SLIDE_WIDTH_INCH / SLIDE_HEIGHT_INCH PPT 幻灯片尺寸(16:9) 13.333 / 7.5
THUMBNAIL_SIZE 缩略图尺寸 (120, 90)
IMAGE_EXTS 支持的图片格式 .png .jpg .jpeg .bmp .tiff .tif .heic .heif

打包发布

build.bat

打包后在 dist/ 生成:

  • crop_tool/ —— 可执行程序文件夹(crop_tool.exe
  • crop_tool-v2.6.zip —— 可上传到 GitHub Releases 的压缩包

技术栈

OpenCV(透视 / 角点 / 边缘检测)· Pillow + pillow-heif(读图 / HEIC / PDF)· python-pptx · python-docx · NumPy · tkinter(GUI)

许可证

MIT License

About

For freely cropping and correcting images in batches, especially suitable for image editing with unfixed camera positions, where each image requires a unique designated cropping region.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages