如何使用Python在Windows上截屏?
我正在创建一个测试人员反馈模块,让他们可以对我的软件发送评论。不过,我想让他们在报告中附上截图。请问我该如何在Windows上用Python截取屏幕截图呢?我在Linux上找到了一些例子,但在Windows上没什么进展。
8 个回答
20
这可以通过 PIL
来实现。首先,你需要安装它,然后就可以像这样进行全屏截图:
import PIL.ImageGrab
im = PIL.ImageGrab.grab()
im.show()
31
值得注意的是,ImageGrab这个功能只能在微软的Windows系统上使用。
如果想要在不同的操作系统上都能用,最好选择wxPython这个库。这个库可以帮助你处理图像,适合做屏幕截图等功能。你可以查看这个链接了解更多信息:http://wiki.wxpython.org/WorkingWithImages#A_Flexible_Screen_Capture_App
import wx
app = wx.App() # Need to create an App instance before doing anything
screen = wx.ScreenDC()
size = screen.GetSize()
bmp = wx.Bitmap(size[0], size[1])
mem = wx.MemoryDC(bmp)
mem.Blit(0, 0, size[0], size[1], screen, 0, 0)
del mem # Release bitmap
bmp.SaveFile('screenshot.png', wx.BITMAP_TYPE_PNG)
49
还有一种非常快速的方法,就是使用 MSS 模块。这个模块和其他解决方案不同,它只使用了 ctypes
这个标准模块,所以不需要安装很多额外的东西。它不依赖于操作系统,使用起来也很简单:
from mss import mss
with mss() as sct:
sct.shot()
然后你只需要找到名为 screenshot.png
的文件,这个文件里保存了第一个显示器的截图。这个模块有很多可以自定义的选项,你可以尝试使用 ScreenShot
对象以及 OpenCV、Numpy、PIL 等等。