小编典典

在Windows上使用python截屏的最快方法

python

在Windows上截图的最快方法是什么?PIL.ImageGrab是相当慢的..花费4-5秒钟才能获得同一小窗口的30个屏幕截图。拍摄整个桌面的屏幕截图甚至更慢。


阅读 446

收藏
2020-12-20

共1个答案

小编典典

您可以直接使用win32 API。

1)首先将焦点放在您要为其截屏的应用程序上。连结文字 “焦点问题在另一个问题中处理”)

2)Win32 API可以帮助截图:

import win32gui
import win32ui 
hwnd = win32gui.FindWindow(None, windowname)
wDC = win32gui.GetWindowDC(hwnd)
dcObj=win32ui.CreateDCFromHandle(wDC)
cDC=dcObj.CreateCompatibleDC()
dataBitMap = win32ui.CreateBitmap()
dataBitMap.CreateCompatibleBitmap(dcObj, w, h)
cDC.SelectObject(dataBitMap)
cDC.BitBlt((0,0),(w, h) , dcObj, (0,0), win32con.SRCCOPY)
dataBitMap.SaveBitmapFile(cDC, bmpfilenamename)
# Free Resources
dcObj.DeleteDC()
cDC.DeleteDC()
win32gui.ReleaseDC(hwnd, wDC)
win32gui.DeleteObject(dataBitMap.GetHandle())
2020-12-20