Estoy creando un módulo de informes Beta Testers para que puedan enviar sus comentarios sobre mi software, pero me gustaría tener la opción de incluir una captura de pantalla con el informe. ¿Cómo hago una captura de pantalla de la pantalla con Python en Windows? He encontrado varios ejemplos en Linux, pero no he tenido mucha suerte en Windows.Obtener captura de pantalla en Windows con Python?
Respuesta
Vale la pena señalar que ImageGrab solo funciona en MSWindows.
Para la compatibilidad multiplataforma, una persona puede aprovechar mejor el uso de la biblioteca 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)
AttributeError: el objeto 'module' no tiene ningún atributo 'App' –
app = wx.App() de lo contrario, puede obtener: wx._core.PyNoAppError: The ¡El objeto wx.App debe crearse primero! Además, descargue wxPython desde aquí: http://wxpython.org/download.php Por alguna razón, no es lo mismo "wx" si solo hace "pip install wx" –
Las ventanas de la CLI salen vacías – olekb
Una forma sencilla de tomar una captura de pantalla es a través de Pygame.
pygame.image.save(Surface, filename)
Donde 'Surface' es la superficie que está tomando una captura de pantalla, y 'nombre' es la ruta del archivo, el nombre y tipo en el que se guarda la imagen durmieron.
Puede exportar como BMP, TGA, PNG o JPEG. A partir de Pygame 1.8, PNG y JPEG también funcionan.
Si no se especifica una extensión de archivo, tendrá un archivo .TGA predeterminado.
Incluso puede usar la biblioteca 'os' para guardar en directorios de archivos específicos.
Un ejemplo:
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"))
Esto ahorra nada sobre la superficie 'superficie' en el escritorio del usuario como pic.png
Dos preguntas: 1. ¿Es pygame independiente de la plataforma? 2. ¿Puedes obtener una captura de pantalla de múltiples monitores? –
Por lo que sé, Pygame es una plataforma independiente. Este código solo capturará pantalla de pygame, y solo la pantalla de pygame.Si su pantalla abarca 2 monitores, creo que podría (aunque no puedo probar esto). ¡Espero que esto ayude! – CPSuperstore
Usted puede utilizar el módulo ImageGrab. ImageGrab solo funciona en Windows, y necesita PIL (almohada) para usarlo. Aquí hay un pequeño ejemplo:
import ImageGrab
snapshot = ImageGrab.grab()
save_path = "C:\\Users\\YourUser\\Desktop\\MySnapshot.jpg"
snapshot.save(save_path)
Otro enfoque que es muy rápido es el módulo MSS. Es diferente de otras soluciones en la forma en que usa solo el módulo estándar ctypes
, por lo que no requiere grandes dependencias. Es independiente del sistema operativo y su uso es fácil:
from mss import mss
with mss() as sct:
sct.shot()
Y acaba de encontrar el archivo que contiene el screenshot.png
captura de pantalla del primer monitor. Hay un montón de personalizaciones possibile, se puede jugar con ScreenShot
objetos y OpenCV/Numpy/PIL/etc ..
ver más ejemplos en https://python-mss.readthedocs.io/en/dev/examples.html – tal
@tal: Su enlace no está actualizado. ¿Podrías actualizar? –
@ Tiger-222: ¿Cómo obtendrías varios monitores? –
Para los usuarios pyautogui:
import pyautogui
screenshot = pyautogui.screenshot()
- 1. Captura de pantalla en Python - Cross Platform
- 2. Captura de pantalla Python 2+ monitores (ventanas)
- 3. La forma más rápida de tomar una captura de pantalla con Python en Windows
- 4. Captura de pantalla del proceso en el Servicio de Windows
- 5. Captura de pantalla en Haskell?
- 6. Convertir URL en captura de pantalla (script)
- 7. ¿Cómo puedo hacer una captura de pantalla en Windows PowerShell?
- 8. Captura de pantalla de la segunda pantalla
- 9. Captura de pantalla de la ventana activa con Python PIL y API de Windows: ¿cómo lidiar con las esquinas redondeadas?
- 10. Captura de pantalla en android
- 11. ¿Puedo escribir una captura de pantalla en Python
- 12. Impedir la captura de pantalla con DirectX
- 13. Captura de pantalla de la pantalla actual
- 14. Pantalla de captura
- 15. Android OpenGL Captura de pantalla
- 16. Cómo tomar una captura de pantalla con FireMonkey (multiplataformas)
- 17. captura de pantalla de escritorio oculto
- 18. Tomando una captura de pantalla con C \ GTK
- 19. Captura de pantalla de una ventana usando python
- 20. Superposición de pantalla para la captura de pantalla
- 21. HTML5 video captura de pantalla
- 22. Captura de impresiones de pantalla en Java
- 23. Qt MDI aplicación con OpenGL: cómo obtener una captura de pantalla válida?
- 24. Tomar una captura de pantalla con Pyglet [Fix'd]
- 25. Captura de pantalla programática en dispositivo móvil
- 26. ¿Cómo tomar la captura de pantalla programáticamente?
- 27. Imagen de captura de pantalla en C++ en OSX
- 28. Captura de pantalla de la toma
- 29. Herramienta de captura de pantalla para BlackBerry?
- 30. Dim la pantalla en Windows con C++
Éste trabajó para mí: http: // stackoverflow. com/questions/4589206/python-windows-7-screenshot-without-pil – User