由于在我的一個程序中想要添加一個截圖功能,今天看一下利用Python怎樣截圖,功能實(shí)現(xiàn)都挺簡單了,直接上代碼
金沙網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
from
PIL
import
ImageGrab
im
=
ImageGrab.grab()
im.save(addr,'jpeg')
很簡單的幾行代碼就實(shí)現(xiàn)了我要的功能,PIL(Python
Image
Library)是Python的一個圖形庫,需要自己下載安裝,im
=
ImageGrab.grab()這行代碼實(shí)現(xiàn)截圖功能,可以帶參數(shù),指定要截取圖片的坐標(biāo)位置,不帶參數(shù)默認(rèn)全屏截圖,im.save(addr,'jpeg')是保存截取的圖片,第一個參數(shù)是保存路徑,第二個參數(shù)是圖片格式
Python獲取電腦截圖有多種方式,具體如下:
PIL中的ImageGrab模塊
windows API
PyQt
pyautogui
使用Selenium截圖
使用PIL中的ImageGrab模塊簡單,但是效率有點(diǎn)低,截屏一次需0.5s。
調(diào)用windows API,速度快但是使用較復(fù)雜,這里就不做詳細(xì)介紹了,因?yàn)橛懈糜玫腜yQt。
PyQt比調(diào)用windows API簡單很多,而且有windows API的很多優(yōu)勢,比如速度快,可以指定獲取的窗口,即使窗口被遮擋。需注意的是,窗口最小化時無法獲取截圖。
首先需要獲取窗口的句柄。
程序會打印窗口的hwnd和title,有了title就可以進(jìn)行截圖了。
pyautogui是比較簡單的,但是不能指定獲取程序的窗口,因此窗口也不能遮擋,不過可以指定截屏的位置,0.04s一張截圖,比PyQt稍慢一點(diǎn),但也很快了。
使用Selenium只能進(jìn)行WEB程序截圖
from?PIL?import?ImageGrab
im?=?ImageGrab.grab()?
#可以指定要截取圖片的坐標(biāo)位置,不帶參數(shù)默認(rèn)全屏截圖
im.save(addr,'jpeg')
#第一個參數(shù)是保存路徑,第二個參數(shù)是圖片格式
需要先下載一個PIL圖形庫