我正在尝试使用适用于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
,但似乎找不到具有该名称的软件包。
我不想使用模仿键盘输入的库,因为脚本会在玩游戏时在后台运行以监视统计信息。反作弊可能会被触发。
答案 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。