上一篇
Python截图保存教程 - 两种简单高效的截图方法 | Python编程指南
- Python
- 2025-08-16
- 453
Python截图保存教程
学习两种简单高效的方法进行屏幕截图并保存为图像文件
为什么需要Python截图功能?
Python截图功能在多种场景中非常有用:
- 自动化测试中捕获屏幕状态
- 创建软件操作教程或文档
- 监控系统状态并定期截图存档
- 开发远程桌面应用
- 创建屏幕录制工具
本教程将介绍两种高效的方法:使用Pillow库和mss库。
方法一:使用Pillow库(跨平台)
Pillow是Python图像处理的标准库,支持Windows、macOS和Linux系统。
安装Pillow
pip install Pillow
完整截图代码示例
from PIL import ImageGrab # 捕获整个屏幕 screenshot = ImageGrab.grab() # 保存截图 screenshot.save("full_screenshot.png") print("截图已保存为 full_screenshot.png")
捕获特定区域
from PIL import ImageGrab # 定义捕获区域:(左上角x, 左上角y, 右下角x, 右下角y) bbox = (100, 100, 800, 600) # 捕获指定区域 screenshot = ImageGrab.grab(bbox=bbox) # 保存截图 screenshot.save("region_screenshot.jpg", "JPEG")
优点:
- 简单易用,适合基本需求
- 跨平台支持
- 与Pillow图像处理功能无缝集成
方法二:使用mss库(高性能)
mss(Multi Screen Shot)库是专门为截图设计的高性能库,速度比Pillow更快。
安装mss
pip install mss
完整截图代码示例
import mss with mss.mss() as sct: # 获取所有显示器信息 monitors = sct.monitors # 捕获第一个显示器 monitor = monitors[1] # 截图 screenshot = sct.grab(monitor) # 保存为PNG文件 mss.tools.to_png(screenshot.rgb, screenshot.size, output="monitor1.png") print("主显示器截图已保存")
多显示器支持
import mss with mss.mss() as sct: # 获取所有显示器 for i, monitor in enumerate(sct.monitors[1:], 1): # 截图 screenshot = sct.grab(monitor) # 保存 filename = f"monitor_{i}.png" mss.tools.to_png(screenshot.rgb, screenshot.size, output=filename) print(f"显示器 {i} 截图已保存为 {filename}")
优点:
- 高性能,特别适合频繁截图
- 原生支持多显示器
- 更灵活的区域选择
两种方法对比
特性 | Pillow | mss |
---|---|---|
速度 | 中等 | 快 |
多显示器支持 | 有限 | 优秀 |
安装大小 | 较大 | 较小 |
学习曲线 | 简单 | 中等 |
图像处理能力 | 强大 | 基础 |
选择建议:
- 基本需求:选择Pillow,简单易用
- 高性能需求:选择mss,特别是需要频繁截图时
- 多显示器环境:mss是更好的选择
- 需要图像处理:Pillow提供更全面的图像处理功能
进阶技巧
定时截图功能
import time import mss def capture_screenshots(interval=5, duration=30): end_time = time.time() + duration count = 1 with mss.mss() as sct: monitor = sct.monitors[1] while time.time() < end_time: screenshot = sct.grab(monitor) filename = f"screenshot_{count}.png" mss.tools.to_png(screenshot.rgb, screenshot.size, output=filename) print(f"截图 {count} 已保存") count += 1 time.sleep(interval) # 每5秒截图一次,持续30秒 capture_screenshots(interval=5, duration=30)
带时间戳的截图
from datetime import datetime from PIL import ImageGrab # 获取当前时间作为文件名 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"screenshot_{timestamp}.png" # 截图并保存 ImageGrab.grab().save(filename) print(f"截图已保存为 {filename}")
本文由GongKaiNa于2025-08-16发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://liuhe.jltcw.com/20258256.html
发表评论