用 Python 製作截圖小工具

大话性能發表於2024-05-09

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 模組來捕獲整個螢幕和它的一部分。

更多內容可以學習《測試工程師 Python 工具開發實戰》書籍《大話效能測試 JMeter 實戰》書籍

相關文章