微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python截图2+监视器Windows

如果连接到多个显示器,如何使用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] 举报,一经查实,本站将立刻删除。

相关推荐