如何使用Python截屏?

时间:2019-10-24 18:59:43

标签: python screenshot

我正在尝试使用适用于Windows和Linux的python截屏。我读过pyscreenshot可以胜任。但是我有一个错误,文档似乎没有指定任何依赖项。

import pyscreenshot as ImageGrab
im = ImageGrab.grab()
im.show()

跟踪:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/procutil.py", line 15, in _wrapper
    r = target(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/__init__.py", line 33, in _grab_simple
    return backend_obj.grab(bbox)
  File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/plugins/wxscreen.py", line 39, in grab
    im.frombytes(buffer(myWxImage.GetData()))
NameError: name 'buffer' is not defined

Traceback (most recent call last):
  File "ambi.py", line 10, in <module>
    im = ImageGrab.grab()
  File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/__init__.py", line 67, in grab
    to_file=False, childprocess=childprocess, backend=backend, bbox=bbox)
  File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/__init__.py", line 46, in _grab
    _grab_simple, imcodec.codec, to_file, backend, bbox, filename)
  File "/usr/local/lib/python3.6/dist-packages/pyscreenshot/procutil.py", line 37, in run_in_childprocess
    raise e
NameError: name 'buffer' is not defined

我用sudo pip3 install pyscreenshot

安装了它

我尝试安装wxscreen,但似乎找不到具有该名称的软件包。

我不想使用模仿键盘输入的库,因为脚本会在玩游戏时在后台运行以监视统计信息。反作弊可能会被触发。

2 个答案:

答案 0 :(得分:0)

您可以像这样使用pyautogui

import pyautogui

myScreenshot = pyautogui.screenshot()

答案 1 :(得分:0)

另一种非常快的方法是MSS模块。它与其他解决方案的不同之处在于,它仅使用ctypes标准模块,因此不需要很大的依赖性。它与操作系统无关,并且易于使用:

from mss import mss

with mss() as sct:
    sct.shot()

然后只找到包含第一个监视器的屏幕快照的screenshot.png文件。有很多可能的自定义项,您可以使用ScreenShot对象和OpenCV / Numpy / PIL / etc。