Python 编程语言允许我们执行各种任务,所有这些都是在简单模块和短小精悍的代码的帮助下完成的。在 Python 的帮助下进行屏幕截图就是这样一项任务。
Python 为我们提供了许多模块,使我们能够执行不同的任务。有多种方法可以使用 Python 及其库进行屏幕截图。
用 Pyautogui 模块进行截图
第一种方法是使用 Python 提供的 pyauotgui 模块。你可以在终端窗口使用下面的命令来安装这个模块。
pip install pyautogui
pyautogui 模块使用 screenshot() 函数,它有助于捕捉整个屏幕。之后,你可以使用 save() 函数来保存图像,或者使用 imwrite() 函数与 NumPy 和 OpenCV 模块一起把图像写到磁盘上。
详细了解一下这两种方法。
1.用 Pyautogui 模块中的 save() 函数
一旦你安装了 pyautogui 模块,最简单的截图方法是使用 screenshot() 函数和 save() 函数。下面是一个使用这些函数的示例代码。
示例代码:
import pyautogui
demo_image = pyautogui.screenshot()
demo_image.save("demo_one.jpg")
首先,我们导入 pyautogui 模块。然后,我们调用 screenshot() 函数,该函数捕获了屏幕的图像。
此外,在最后一行代码中,我们使用 save() 函数和我们想保存的图像的名称。在这种情况下,捕获的图像可以通过文件名 demo_one.jpg 找到。
下面是我们得到的输出图像。注意,你会在 Jupyter 笔记本或 Python 的同一目录下找到这个图像。
如果你想在捕捉图像时有一些延迟,你可以使用 time 模块的 sleep() 函数。
2.用 Numpy 和 Opencv 模块与 Pyautogui 一起使用
第二种方法涉及到与 pyautogui 一起使用另外两个模块;它们是 NumPy 和 OpenCV 。在第一种方法中,我们使用 save() 函数来保存图像。
但在这里,我们将使用这两个模块来拍摄和保存屏幕截图。
通过在终端写下以下命令来安装 Numpy 和 OpenCV 。
pip install numpy
pip install opencv-python
下面是所有模块安装后必须使用的代码。
示例代码:
#import the required modules
import numpy as x
import cv2
import pyautogui
#use pyautogui to take screenshot
demo_image = pyautogui.screenshot()
#use opencv and numpy to manipulate image
demo_image = cv2.cvtColor(x.array(demo_image),cv2.COLOR_RGB2BGR)
#save the image using opencv
cv2.imwrite("demo_two.png", demo_image)
我们首先导入了所需的模块,然后使用 screenshot() 函数来捕获屏幕。然后,我们将图像转换为 NumPy 数组,并将颜色的顺序从 RGB 改为 BGR。
这样做是因为当 OpenCV 读取图像时,它要求颜色的顺序是 BGR 而不是默认的 RGB。最后,我们使用 imwrite() 函数将图像写到磁盘上。
这就是输出图像的样子。
输出:
以上是关于如何在 Python 中使用 pyautogui 模块进行屏幕截图的全部内容。现在,我们要进入下一个方法来做同样的事情。
要了解更多关于 pyautogui 模块的信息,请参考这个文档。
用 Pillow 模块
使用 pyautogui 模块,默认情况下可以捕获整个屏幕。然而,如果我们必须捕捉屏幕的一部分,我们可以使用 Pillow 模块。
这个模块使用另一个叫做 ImageGrab 的子模块,让我们设置我们想要捕捉的屏幕区域的坐标。我们使用 grab() 函数来指定这些坐标。
下面是这种方法的代码。
示例代码:
#Python小白学习交流群:711312441
from PIL import ImageGrab
ss_coordinates = (200, 200, 600, 600)
demo_image = ImageGrab.grab(ss_coordinates)
demo_image.save("demo_three.jpg")
我们首先导入了 Pillow 模块和 ImageGrab 子模块。然后,我们为我们想要捕捉的屏幕设置了一些坐标。
此外,我们使用 grab() 函数,并将这些坐标传递给该函数。然后,使用 save() 方法保存捕获的图像。
这就是我们得到的屏幕截图。
输出:
从本质上讲,这就是在 Python 中拍摄屏幕截图的方法,即通过设置坐标。参考该文档以了解更多关于 Pillow 模块的信息。
用 Pyscreenshot 模块
Python 提供了这个叫做 pyscreenshot 的模块,其唯一的任务就是进行截图。要安装这个模块,在终端使用以下命令。
pip install pyscreenshot
一旦该模块安装完毕,使用这段代码对整个屏幕进行截图。
示例代码:
import pyscreenshot
image_demo = pyscreenshot.grab()
image_demo.save("demo_four.png")
我们首先导入了 pyscreenshot 模块,然后使用 grab() 函数来捕获屏幕。最后,我们使用 save() 函数来保存图像。
下面是我们得到的图像的输出。
输出:
我们还可以使用这个模块来捕捉屏幕的一部分。我们只需将所需的坐标作为一个元组传递给 grab() 函数。
下面是对屏幕特定部分进行截图的代码。
示例代码:
import pyscreenshot
image_demo = pyscreenshot.grab(bbox=(100, 100, 500, 500))
image_demo.save("demo_five.png")
请注意,我们在代码的第二行中传递了我们想要捕捉的屏幕部分的坐标。其余的代码与前面的代码工作相同。
下面是捕捉到的图像。
输出:
注意这个模块,pyscreenshot ,已经不怎么用了,你最好选择我们讨论的前两种在 Python 中拍摄屏幕的方法。这就是关于如何在 Python 中进行屏幕截图的全部内容。
总结
这篇文章讨论了我们如何使用 Python 编程语言进行截图。我们看到了如何使用 pyautogui 模块与 save() 函数和其他模块,如 NumPy 和 OpenCV 。
我们还学习了如何使用 Python 的 Pillow 模块来捕捉屏幕的一部分。此外,我们还看到了如何使用 pyscreenshot 模块来捕获整个屏幕和它的一部分。