## inux环境下
可以参考这个示例:http://stackoverflow.com/questions/69645/take-a-screenshot-via-a-python-script-linux
这个是使用gtk库
view plaincopyprint?
- import gtk.gdk
- w = gtk.gdk.get_default_root_window()
- sz = w.get_size()
- print “The size of the window is %d x %d” % sz
- pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
- pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
- if (pb != None):
- pb.save(“screenshot.png”,“png”)
- print “Screenshot saved to screenshot.png.”
- else:
- print “Unable to get the screenshot.”
- 这是使用PyQt4库的截图代码,也可以在windows下使用
- import sys
- from PyQt4.QtGui import QPixmap, QApplication
- app = QApplication(sys.argv)
- QPixmap.grabWindow(QApplication.desktop().winId()).save(‘test.png’, ‘png’)
Windows环境下
以上代码都是全屏截图的。下面介绍一下窗口截图的操作,暂时只有windows下的,linux的X11还要研究一下。
windows窗口有句柄的概念,通过句柄,我们可以知道这个句柄指向的窗口大小,位置等坐标信息。那么使用PIL中的ImageGrab库或Qt的QPixmap类都可以获取这个范围内的图像。前提是需要截图的部分在窗口最顶层,可以直接看到。
原理就是这些了,下面给一个示例,也是从网上找出来并修改的:
Qt版本:
PIL版本: