
屏幕截图是日常工作和自动化任务中的常见需求。Python提供了多种实现屏幕截图的方法,本文将介绍三种实用的实现方式,包括使用方法、适用场景和完整代码示例。
适合简单的单次截图需求,如快速保存当前屏幕状态、制作操作教程配图等。这是最轻量级的解决方案。
1、安装Pillow库: pip install Pillow
2、运行脚本即可完成截图
3、截图将保存为当前目录下的 screenshot.jpg
from PIL import ImageGrab
import datetime
def take_screenshot():
# 捕获整个屏幕
screenshot = ImageGrab.grab()
# 生成带时间戳的文件名
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"screenshot_{timestamp}.jpg"
# 保存截图
screenshot.save(filename, "JPEG")
print(f"截图已保存为: {filename}")
if __name__ == "__main__":
take_screenshot()适合需要连续监控的场景,如软件演示录制、系统监控、自动化测试过程记录等。
1、安装pyautogui: pip install pyautogui
2、运行脚本并输入截图间隔时间(秒)和总时长(分钟)
3、截图将自动保存在创建的 screenshots 文件夹中
import pyautogui
import time
import os
from datetime import datetime
def continuous_screenshot(interval=5, duration_minutes=1):
"""
连续截图功能
interval: 截图间隔(秒)
duration_minutes: 总持续时间(分钟)
"""
# 创建保存目录
if not os.path.exists("screenshots"):
os.makedirs("screenshots")
total_seconds = duration_minutes * 60
screenshot_count = total_seconds // interval
print(f"开始连续截图,共{screenshot_count}张,间隔{interval}秒")
for i in range(screenshot_count):
# 捕获屏幕
screenshot = pyautogui.screenshot()
# 生成文件名
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"screenshots/screenshot_{timestamp}_{i+1}.png"
# 保存截图
screenshot.save(filename)
print(f"已保存第{i+1}张截图: {filename}")
# 等待指定间隔
time.sleep(interval)
print("连续截图完成!")
if __name__ == "__main__":
interval = int(input("请输入截图间隔(秒): "))
duration = int(input("请输入截图持续时间(分钟): "))
continuous_screenshot(interval, duration)适合需要高性能截图的场景,如游戏录制、实时监控、视频处理等对截图速度要求较高的应用。
1、安装mss库: pip install mss
2、运行脚本选择截图模式(单次/连续)
3、截图将保存为PNG格式,支持多显示器配置
import mss
import mss.tools
import time
from datetime import datetime
def high_performance_screenshot(mode='single', monitor_num=1, interval=1, count=10):
"""
高性能截图工具
mode: 'single'单次截图, 'continuous'连续截图
monitor_num: 显示器编号(从1开始)
interval: 连续截图间隔(秒)
count: 连续截图数量
"""
with mss.mss() as sct:
# 获取所有显示器信息
monitors = sct.monitors
if monitor_num > len(monitors):
print(f"错误:只有{len(monitors)}个显示器")
return
# 选择指定的显示器
monitor = monitors[monitor_num - 1]
if mode == 'single':
# 单次截图
screenshot = sct.grab(monitor)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"highres_screenshot_{timestamp}.png"
mss.tools.to_png(screenshot.rgb, screenshot.size, output=filename)
print(f"高清截图已保存: {filename}")
elif mode == 'continuous':
# 连续截图
print(f"开始高性能连续截图,共{count}张")
for i in range(count):
screenshot = sct.grab(monitor)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S_%f")
filename = f"highres_screenshot_{timestamp}_{i+1}.png"
mss.tools.to_png(screenshot.rgb, screenshot.size, output=filename)
print(f"已保存第{i+1}张高清截图")
if i < count - 1: # 最后一张不需要等待
time.sleep(interval)
print("高性能连续截图完成!")
if __name__ == "__main__":
print("选择截图模式:")
print("1 - 单次截图")
print("2 - 连续截图")
choice = input("请输入选择(1或2): ")
if choice == '1':
monitor_num = int(input("请输入显示器编号(默认为1): ") or "1")
high_performance_screenshot('single', monitor_num)
elif choice == '2':
monitor_num = int(input("请输入显示器编号(默认为1): ") or "1")
interval = float(input("请输入截图间隔(秒): "))
count = int(input("请输入截图数量: "))
high_performance_screenshot('continuous', monitor_num, interval, count)根据具体需求选择合适的截图方法,可以大大提高工作效率。三种方法各有优势,建议根据实际场景灵活选择。
方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
PIL库 | 简单轻量,依赖少 | 功能相对基础 | 简单单次截图 |
pyautogui | 功能丰富,易于使用 | 性能一般 | 常规自动化任务 |
mss库 | 高性能,支持多显示器 | 安装稍复杂 | 高性能需求场景 |
“无他,惟手熟尔”!有需要的用起来!
如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!
本文分享自 Nicholas与Pypi 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!