当前位置: 首页 > 面试题库 >

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

潘国源
2023-03-14
问题内容

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


问题答案:

您可以直接使用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())


 类似资料:
  • 问题内容: 但适用于linux / X11。 更具体地说,我需要一种方法来捕获在X11 diplay上运行的一个窗口(窗口中alt-print屏幕的程序等效)的像素图像。 注意事项和要求: 1)即使将新窗口放置在正在捕获的窗口之上,像素图像也应始终指向原始应用程序窗口,而不会发生任何遮挡 2)不需要用户看到应用程序窗口,我只需要存储用于视频目的的像素缓冲区/图像 我探索过的其他替代方法是: 1)x

  • 问题内容: 我正在使用 Python 2.7 和 OpenCV 2.4.9 。 我需要捕获显示给用户的当前帧,并将其作为 cv :: Mat 对象加载到Python中。 你们知道递归的快速方法吗? 我需要类似下面示例中的操作,该操作以递归方式从网络摄像头捕获 _ Mat_ 帧: 在示例中,它使用了 VideoCapture类 来处理从网络摄像头捕获的图像。 通过VideoCapture.read(

  • 我一直在试图让这段代码在片段中工作。这段代码在活动中运行良好,但我无法使其在片段中工作。 当我单击一个按钮时,它会调用截屏方法。 这是屏幕截图的代码: “findViewById”由于位于片段中而无法识别。 我试过: 但它也不起作用。我得到 任何帮助都将不胜感激。

  • 问题内容: 我正在尝试使用Linux上的python脚本拍摄当前窗口的屏幕截图。 我目前有一个脚本,可以截取整个屏幕的屏幕截图: 但是一个只想拥有选定的窗口。我知道问题出在grabWindow。但我不知道如何解决。 问题答案: 只需更换 与您要为其截屏的小部件一起使用。

  • 问题内容: 使用Selenium的webdriverjs运行Webdriver测试时,截屏的正确方法是什么? 我已经启动了独立的selenium服务器,并且可以看到在selenium服务器上记录了用于截屏的命令,但是没有保存该截屏。 我的代码如下: 问题答案: 拍摄屏幕快照会返回一个Promise,它将以Base64编码的png解析。要写入数据,您需要执行以下操作: 更多文档可以在这里找到

  • 我想截屏Selenium中的一个元素,根据文档,每个WebElement都有一个功能: 截图(文件名) 将当前元素的屏幕截图保存到PNG图像文件。如果有任何IOError,则返回False,否则返回True。在文件名中使用完整路径。 Args:filename:您希望将屏幕截图保存到的完整路径。这应该以一个简单的结尾。png扩展 用法:元素。截图(“/Screenshots/foo.png”) 但