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

用Python获取Windows屏幕截图?

我正在创build一个Betatesting人员报告模块,以便他们可以发送他们对我的软件的评论,但是我希望可以select在报告中包含屏幕截图。 我如何在Windows上使用Python进行屏幕截图? 我在Linux上发现了几个例子,但在Windows上没有太多的运气。

像GotoMeeting这样的软件如何捕获桌面的图像?

用adb&perl捕获android设备屏幕截图

如何在Linux(编程)采取截图(高fps)

如何在Linux framebuffer上截屏捕捉屏幕截图或电影

渲染Windows截图捕获位图为DirectX纹理

值得注意的是,ImageGrab只适用于MSWindows。

为了跨平台兼容性,一个人可能最好使用wxPython库。 http://wiki.wxpython.org/WorkingWithImages#A_Flexible_Screen_Capture_App

import wx wx.App() # Need to create an App instance before doing anything screen = wx.ScreenDC() size = screen.GetSize() bmp = wx.EmptyBitmap(size[0],size[1]) mem = wx.MemoryDC(bmp) mem.Blit(0,size[0],size[1],screen,0) del mem # Release bitmap bmp.SaveFile('screenshot.png',wx.BITMAP_TYPE_PNG)

一个简单的截图方法是通过Pygame。

pygame.image.save(Surface,filename)

其中“表面”是您正在截取的表面,“文件名”是保存图像的文件路径,名称和类型。

您可以导出为BMP,TGA,PNG或JPEG。 截至Pygame 1.8,PNG和JPEG也有效。

如果没有指定文件扩展名,它将认为一个.TGA文件

你甚至可以使用'os'库来保存到特定的文件目录。

一个例子:

import os import pygame surface = pygame.display.set_mode((100,100),32) surface.fill((255,255,255)) pygame.draw.circle(surface,(0,0),(10,10),15,0) pygame.display.update() pygame.image.save(surface,os.path.expanduser("~/Desktop/pic.png"))

这将“表面”表面上的任何东西都保存在用户的桌面上,如pic.png

MSS模块是另一种非常快速方法。 它与其他解决方案不同之处在于它只使用ctypes标准模块,因此不需要很大的依赖关系。 它独立于操作系统,使用起来非常简单:

from mss import mss with mss() as sct: sct.shot()

只需找到包含第一台显示器屏幕screenshot.png文件。 有很多可能的定制,你可以玩ScreenShot对象和OpenCV / Numpy / PIL /等。

您可以使用ImageGrab模块。 ImageGrab只能在Windows上运行,而且你需要PIL (Pillow)来使用它。 这是一个小例子:

import ImageGrab snapshot = ImageGrab.grab() save_path = "C:\Users\YourUser\Desktop\MySnapshot.jpg" snapshot.save(save_path)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐