Python編程語言允許我們執行各種任務,所有這些都是在簡單模塊和短小精悍的代碼的幫助下完成的。在Python的幫助下進行屏幕截圖就是這樣一項任務。 Python為我們提供了許多模塊,使我們能夠執行不同的任務。有多種方法可以使用Python及其庫進行屏幕截圖。 ### 用Pyautogui模塊進行截 ...
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 模塊來捕獲整個屏幕和它的一部分。