首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 3个实现屏幕截图工具的方法

Python 3个实现屏幕截图工具的方法

作者头像
用户11081884
发布2026-07-20 19:01:51
发布2026-07-20 19:01:51
270
举报

屏幕截图是日常工作和自动化任务中的常见需求。Python提供了多种实现屏幕截图的方法,本文将介绍三种实用的实现方式,包括使用方法、适用场景和完整代码示例。

方法一:使用PIL(Pillow)库实现基础截图

场景介绍

适合简单的单次截图需求,如快速保存当前屏幕状态、制作操作教程配图等。这是最轻量级的解决方案。

使用方法

1、安装Pillow库: pip install Pillow

2、运行脚本即可完成截图

3、截图将保存为当前目录下的 screenshot.jpg

代码示例

代码语言:javascript
复制
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()

方法二:使用pyautogui实现定时连续截图

场景介绍

适合需要连续监控的场景,如软件演示录制、系统监控、自动化测试过程记录等。

使用方法

1、安装pyautogui: pip install pyautogui

2、运行脚本并输入截图间隔时间(秒)和总时长(分钟)

3、截图将自动保存在创建的 screenshots 文件夹中

代码示例

代码语言:javascript
复制
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)

方法三:使用mss库实现高性能截图

场景介绍

适合需要高性能截图的场景,如游戏录制、实时监控、视频处理等对截图速度要求较高的应用。

使用方法

1、安装mss库: pip install mss

2、运行脚本选择截图模式(单次/连续)

3、截图将保存为PNG格式,支持多显示器配置

代码示例

代码语言:javascript
复制
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库

高性能,支持多显示器

安装稍复杂

高性能需求场景

“无他,惟手熟尔”!有需要的用起来!

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法一:使用PIL(Pillow)库实现基础截图
    • 场景介绍
    • 使用方法
    • 代码示例
  • 方法二:使用pyautogui实现定时连续截图
    • 场景介绍
    • 使用方法
    • 代码示例
  • 方法三:使用mss库实现高性能截图
    • 场景介绍
    • 使用方法
    • 代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档