Zac*_*own 38 python windows screenshot
我正在创建Beta测试人员报告模块,以便他们可以发送我的软件评论,但我希望可以选择在报告中包含屏幕截图.如何在Windows上使用Python截取屏幕截图?我在Linux上找到了几个例子,但在Windows上没有多少运气.
Sep*_*ero 25
值得注意的是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, 0, size[0], size[1], screen, 0, 0)
del mem # Release bitmap
bmp.SaveFile('screenshot.png', wx.BITMAP_TYPE_PNG)
Run Code Online (Sandbox Code Playgroud)
Tig*_*222 13
另一种非常快的方法是MSS模块.它与其他解决方案的不同之处在于它仅使用ctypes
标准模块,因此它不需要很大的依赖性.它是独立于操作系统的,它的使用变得简单:
from mss import mss
with mss() as sct:
sct.shot()
Run Code Online (Sandbox Code Playgroud)
然后找到screenshot.png
包含第一台显示器屏幕截图的文件.有很多可能的自定义,你可以玩ScreenShot
对象和OpenCV/Numpy/PIL /等.
小智 13
这可以通过以下方式完成PIL
.首先,安装它,然后你可以采取这样的完整截图:
import PIL.ImageGrab
im = PIL.ImageGrab.grab()
im.show()
Run Code Online (Sandbox Code Playgroud)
截屏的一个简单方法是通过 Pygame。
pygame.image.save(Surface, filename)
Run Code Online (Sandbox Code Playgroud)
其中“Surface”是您要截取屏幕截图的表面,“filename”是您保存图像的文件路径、名称和类型。
您可以导出为 BMP、TGA、PNG 或 JPEG。从 Pygame 1.8 开始,PNG 和 JPEG 也可以使用。
如果未指定文件扩展名,则默认为 .TGA 文件。
您甚至可以使用“os”库保存到特定的文件目录。
一个例子:
import os
import pygame
surface = pygame.display.set_mode((100, 100), 0, 32)
surface.fill((255, 255, 255))
pygame.draw.circle(surface, (0, 0, 0), (10, 10), 15, 0)
pygame.display.update()
pygame.image.save(surface, os.path.expanduser("~/Desktop/pic.png"))
Run Code Online (Sandbox Code Playgroud)
这会将“表面”Surface 上的所有内容保存到用户的桌面上,如 pic.png
小智 5
您可以使用ImageGrab模块。ImageGrab可在Windows和macOS上运行,并且需要PIL(枕头)才能使用它。这是一个小例子:
from PIL import ImageGrab
snapshot = ImageGrab.grab()
save_path = "C:\\Users\\YourUser\\Desktop\\MySnapshot.jpg"
snapshot.save(save_path)
Run Code Online (Sandbox Code Playgroud)
对于pyautogui用户:
import pyautogui
screenshot = pyautogui.screenshot()
Run Code Online (Sandbox Code Playgroud)