You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用pyautogui截取包含鼠标光标且无需后期编辑的截图

pyautogui截图捕获鼠标光标的解决方案

首先明确:pyautogui 官方没有提供直接开启截图包含光标指针的默认配置项,自带的pyautogui.screenshot()方法本身就不会捕获系统光标,无法通过修改默认参数实现无需额外编辑直接输出带光标的截图。

你可以选择以下两种适配高频截图需求的实现方案:

方案1:结合pyautogui光标位置手动叠加光标(无额外第三方依赖,性能损失极小)

你可以先获取当前鼠标的实时坐标,再在截图对应位置叠加预设的光标透明图,完全适配你现有每秒多次截图的逻辑,修改后代码示例:

import time
import pyautogui
from PIL import Image

# 提前准备好和系统光标样式一致的PNG透明图,尺寸建议24*24/32*32,放在脚本同目录
CURSOR_IMG = Image.open("cursor.png").convert("RGBA")

def takeScreenshot(count):
    myScreenshot = pyautogui.screenshot().convert("RGBA")
    # 获取当前鼠标坐标
    mouse_x, mouse_y = pyautogui.position()
    # 把光标叠加到截图对应位置
    myScreenshot.paste(CURSOR_IMG, (mouse_x, mouse_y), mask=CURSOR_IMG)
    # 转RGB格式保存
    myScreenshot.convert("RGB").save(r'imgs\screenshot_'+str(count)+'.png')
    time.sleep(0.2)
    takeScreenshot(count+1)

takeScreenshot(0)

该方案的截图延迟和你原有代码几乎一致,完全满足高频截图需求。

方案2:换用mss库实现原生带光标截图(自动匹配系统实时光标样式)

如果需要捕获系统动态变化的光标(比如输入时的I形光标、加载时的转圈光标),可以换用mss库,它原生支持捕获光标,无需提前准备光标素材:

  1. 先安装依赖:pip install mss
  2. 代码修改为:
import time
import mss
import mss.tools

def takeScreenshot(count):
    with mss.mss(with_cursor=True) as sct:
        # 捕获全屏
        monitor = sct.monitors[0]
        sct_img = sct.grab(monitor)
        # 保存截图
        mss.tools.to_png(sct_img.rgb, sct_img.size, output=r'imgs\screenshot_'+str(count)+'.png')
    time.sleep(0.2)
    takeScreenshot(count+1)

takeScreenshot(0)

只要开启with_cursor=True参数即可原生输出带光标的截图,性能足够支持每秒5次以上的截图需求。

内容的提问来源于stack exchange,提问作者Itamar Shubin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:15:03