一个适用于 Windows 的自动截图工具,使用 Python + tkinter 构建图形界面。
支持按设定的时间间隔自动截取屏幕、空闲检测、跳过相似画面、系统托盘、开机自启等功能。
- 自动/手动截图:支持立即截图或按时间间隔循环截图。
- 灵活的文件命名:支持
%Y %M %D %H %N %S等时间占位符,可用/或\创建子目录。 - 多种输出格式:JPG、PNG、BMP。
- JPG 质量调节:1–100 可调,支持灰度模式。
- 空闲检测:检测到用户长时间无键盘/鼠标操作时自动跳过截图。
- 截图范围:可选择仅截取主屏或截取所有屏幕。
- 相似图跳过:与上一张保存的截图进行像素级比对,相似度达到阈值时跳过保存。
- 系统托盘:关闭窗口时可最小化到托盘,托盘菜单支持显示/截图/开始/停止/退出。
- 开机自启:通过 Windows 注册表实现。
- 配置持久化:设置自动保存到
%APPDATA%\AutoScreenshot\settings.json。
auto_screenshot/
├── auto_screenshot.py # 入口启动脚本(兼容直接双击运行)
├── auto_screenshot/ # 主程序包
│ ├── __init__.py # 包信息与版本
│ ├── __main__.py # `python -m auto_screenshot` 入口
│ ├── app.py # 主应用控制器,协调 UI、配置、截图、托盘
│ ├── capture.py # 截图捕获、保存、相似度判断
│ ├── config.py # 配置读写与默认值
│ ├── constants.py # 全局常量与界面文本
│ ├── tray.py # 系统托盘图标与菜单
│ ├── ui.py # tkinter 界面构建
│ └── utils.py # 工具函数(路径格式化、空闲检测、注册表等)
├── README.md
└── .gitignore
- 操作系统:Windows(部分功能如空闲检测、开机自启依赖 Windows API)
- Python:3.8 或更高版本
核心功能只需要 Pillow:
pip install Pillow可选依赖:
# 高性能截图(推荐)
pip install mss
# 系统托盘最小化
pip install pystraypython auto_screenshot.pypython -m auto_screenshot使用 PyInstaller 等工具打包后,可实现无 Python 环境运行:
pip install pyinstaller
pyinstaller -w -F --hidden-import auto_screenshot.app auto_screenshot.py本仓库已配置 GitHub Actions 工作流(.github/workflows/release.yml),推送 tag 后会自动在 Windows 环境下打包 exe 并发布到 Release。
创建并推送 tag:
git tag v1.0.0
git push origin v1.0.0或者进入 GitHub 仓库页面,点击 Actions → Build and Release → Run workflow 手动触发。
程序首次运行后会自动创建配置文件:
%APPDATA%\AutoScreenshot\settings.json
示例内容:
{
"output_dir": "C:\\Users\\YourName\\Pictures\\AutoScreenshots",
"name_format": "%Y-%M-%D\\%Y-%M-%D %H-%N-%S",
"interval_sec": 180,
"capture_scope": "primary",
"image_format": "JPG",
"quality": 50,
"grayscale": false,
"stop_when_idle": false,
"idle_threshold_min": 5,
"auto_start": false,
"start_minimized": false,
"start_on_boot": false,
"minimize_to_tray_on_close": true,
"skip_similar": false,
"match_percent": 100
}- 每次截图生成一张 320×180 的 RGB 缩略图。
- 使用
ImageChops.difference计算与上一张保存图片的逐像素差异。 - 将差异平均值转换为 0–100 的相似度百分比。
- 当相似度 ≥ 用户设定的匹配百分比时,跳过保存。
- 保存成功后,将当前缩略图更新为新的参考图。
提示:100% 阈值在实际情况中很难命中,建议设置为 95%–98% 以获得更好的去重效果。
| 模块 | 职责 |
|---|---|
app.py |
主控制器,管理应用生命周期、事件循环、配置保存 |
capture.py |
CaptureEngine 类:截图抓取、图像保存、空闲/相似判断 |
config.py |
配置默认值、加载与持久化 |
constants.py |
应用名称、配置路径、界面文本常量 |
tray.py |
TrayManager 类:系统托盘图标与菜单 |
ui.py |
UIBuilder 类:构建 tkinter 界面 |
utils.py |
通用工具:路径格式化、DPI 适配、空闲时间、注册表读写 |
- 空闲检测功能依赖 Windows API
GetLastInputInfo,仅支持 Windows。 - 开机自启通过
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run实现。 - 如果没有安装
mss,会自动回退到 Pillow 的ImageGrab。 - 如果没有安装
pystray,「最小化到托盘」选项会被禁用。
MIT