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

标签 python windows screenshot

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

最佳答案

您可以直接使用 win32 API。

  1. 首先将焦点放在您要截屏的应用程序上。 link text

  2. Win32 API可以帮忙截图:

import win32gui
import win32ui
import win32con

w = 1920 # set this
h = 1080 # set this
bmpfilenamename = "out.bmp" #set this

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())

关于python - 在 Windows 上使用 python 截屏的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3586046/

相关文章:

python - django dev server未读POST数据会报错

python - 如何在 huey 任务中进行模拟/猴子修补?

windows - XChat for Windows 中的 minigtk.dll 是如何工作的?

windows - Cygwin:创建 Windows 通知并在单击通知时聚焦程序

javascript - 使用 Javascript 截取单个页面应用程序的屏幕截图

ios - 将屏幕截图上传到新的 iTunes Connect 时出错

python - 为什么 list.append(obj) 在 Python 中修改 obj?

python - 如何在特定的堆栈帧上进入PDB

.net - 如何使用c++或vb.net在windows中获取当前打开的应用程序?

没有 PIL 的 Python windows 7 屏幕截图