python 的哪些成像模块可以让您截取特定尺寸的屏幕截图(而不是整个屏幕)?我尝试过 PIL,但似乎无法让 ImageGrab.grab() 选择一个小矩形,我尝试过 PyGame,但我无法让它在主显示面板之外进行屏幕截图
问问题
45326 次
5 回答
11
您可以使用pyscreenshot模块。
该pyscreenshot
模块可用于将屏幕内容复制到PIL
图像存储器或文件中。您可以使用pip
.
$ sudo pip install pyscreenshot
用法:
import pyscreenshot as ImageGrab
# fullscreen
im=ImageGrab.grab()
im.show()
# part of the screen
im=ImageGrab.grab(bbox=(10,10,500,500))
im.show()
# to file
ImageGrab.grab_to_file('im.png')
于 2013-10-31T02:28:50.430 回答
5
3
1) 使用 pyscreenshot,ImageGrab 可以工作,但只能在 Windows 上使用
2)抓取图像并将其装箱,然后保存该图像
3) 不要使用 ImageGrab.grab_to_file,它会保存完整大小的图像
4) 如果您只想保存屏幕截图,则不需要使用 im.show 显示图像
import pyscreenshot as ImageGrab
im=ImageGrab.grab(bbox=(10,10,500,500))
im.save('im.png')
于 2016-02-26T20:32:40.533 回答
2
您可以使用Python MSS。
从文档到仅捕获屏幕的一部分:
import mss
import mss.tools
with mss.mss() as sct:
# The screen part to capture
monitor = {"top": 160, "left": 160, "width": 160, "height": 135}
output = "sct-{top}x{left}_{width}x{height}.png".format(**monitor)
# Grab the data
sct_img = sct.grab(monitor)
# Save to the picture file
mss.tools.to_png(sct_img.rgb, sct_img.size, output=output)
print(output)
于 2019-02-25T10:59:34.397 回答
1
您可以在 linux 或 windows 平台上使用 pyscreenshot。我正在使用 Ubuntu,它对我有用。如果应用子进程,您可以强制将其设置为 false 与 mss 一起提供最佳性能。
import pyscreenshot as ImageGrab
import time
t1 = time.time()
imgScreen = ImageGrab.grab(backend="mss", childprocess=False)
img = imgScreen.resize((640,480))
img.save("screen.png")
t2 = time.time()
print("The passing time",(t2-t1))
于 2020-07-17T03:47:24.357 回答