如果连接到多个显示器,如何使用python进行截图?
我试过了:
import sys from PyQt4.QtGui import Qpixmap,QApplication app = QApplication(sys.argv) Qpixmap.grabWindow(QApplication.desktop().winId()).save('test.png','png') import ImageGrab im = ImageGrab.grab() im.save('test.png','PNG')
这两个选项都提供了屏幕截图,只有主监视器
如果我使用winapi:
HTML文件截图为.jpg或其他图像
GDI截图,结果在不同的电脑上有所不同
我怎样才能不断屏幕截图而不杀人的performance?
检测Windowsanimation设置
hWnd = win32gui.FindWindow(None,win_name) dc = win32gui.GetwindowDC(hWnd) i_colour = int(win32gui.GetPixel(dc,int(x),int(y))) rgb = ((i_colour & 0xff),((i_colour >> 8) & 0xff),((i_colour >> 16) & 0xff))
我从第二台显示器的窗口中得到一张照片。 但是会很慢。
如果我按下剪贴板中的'printscreen'将是一个正常的屏幕截图,所有的显示器。 有没有一个选项可以在Python中获得完整的屏幕截图?
Python:'pyautogui'没有属性'截图'(Windows)
winAPI BitBlt只能在某些应用程序中捕获窗口
在WIndows中捕获PC的全屏幕8.1
从命令行复制图像到剪贴板
在linux中使用opencv的c ++快速截图
使用wxPython,win32api和ctypes的组合:
import wx,win32api,win32gui,win32con,ctypes class App(wx.App): def OnInit(self): dll = ctypes.WinDLL('gdi32.dll') for idx,(hMon,hDC,(left,top,right,bottom)) in enumerate(win32api.EnumdisplayMonitors(None,None)): hDeskDC = win32gui.CreateDC(win32api.GetMonitorInfo(hMon)['Device'],None,None) bitmap = wx.EmptyBitmap(right - left,bottom - top) hMemDC = wx.MemoryDC() hMemDC.SelectObject(bitmap) try: dll.BitBlt(hMemDC.GetHDC(),right - left,bottom - top,int(hDeskDC),win32con.SRCcopY) finally: hMemDC.SelectObject(wx.NullBitmap) bitmap.SaveFile('screenshot_%02d.bmp' % idx,wx.BITMAP_TYPE_BMP) win32gui.ReleaseDC(win32gui.GetDesktopWindow(),hDeskDC) return False App(0)
我的Desktopmagic库为Python 2.6,2.7和3.3+提供了这个功能。 它可以返回一个PIL / Pillow Image或者写一个BMP。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。