Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoScreenshot

一个适用于 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 pystray

运行方式

方式一:直接运行入口脚本

python auto_screenshot.py

方式二:作为模块运行

python -m auto_screenshot

方式三:打包为 exe(可选)

使用 PyInstaller 等工具打包后,可实现无 Python 环境运行:

pip install pyinstaller
pyinstaller -w -F --hidden-import auto_screenshot.app auto_screenshot.py

方式四:使用 GitHub Actions 自动构建 Release

本仓库已配置 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
}

相似截图跳过逻辑

  1. 每次截图生成一张 320×180 的 RGB 缩略图。
  2. 使用 ImageChops.difference 计算与上一张保存图片的逐像素差异。
  3. 将差异平均值转换为 0–100 的相似度百分比。
  4. 当相似度 用户设定的匹配百分比时,跳过保存。
  5. 保存成功后,将当前缩略图更新为新的参考图。

提示: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,「最小化到托盘」选项会被禁用。

License

MIT

About

带图形界面的 Windows 自动截图工具,支持定时截图、空闲检测、相似画面跳过、系统托盘和开机自启

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages