Ich erstelle ein Beta-Tester-Modul, damit sie ihre Kommentare zu meiner Software senden können, aber ich hätte gerne die Möglichkeit, einen Screenshot mit dem Bericht zu erstellen. Wie mache ich einen Screenshot des Bildschirms mit Python unter Windows? Ich habe einige Beispiele für Linux gefunden, aber ich hatte unter Windows nicht viel Glück.Holen Sie sich einen Screenshot unter Windows mit Python?
Antwort
Beachten Sie, dass ImageGrab nur auf MSWindows funktioniert.
Für Cross-Plattform-Kompatibilität, eine Person möglicherweise am besten mit der Verwendung der WxPython-Bibliothek. 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: 'Modul' Objekt hat kein Attribut 'App' –
app = wx.App() sonst könnten Sie erhalten: wx._core.PyNoAppError: The wx.App-Objekt muss zuerst erstellt werden! Download wxPython von hier aus: http://wxpython.org/download.php Aus irgendeinem Grund ist es nicht das gleiche "wx", wenn Sie nur "pip installieren wx" –
CLI Windows herauskommen leer – olekb
Ein einfacher Weg, um einen Screenshot aufzunehmen, ist durch Pygame.
pygame.image.save(Surface, filename)
Wo ‚Surface‘ ist die Oberfläche, die Sie einen Screenshot nehmen, und ‚Dateiname‘ ist der Dateipfad, Name und Art, wo Sie thew Bild speichern.
Sie können als BMP, TGA, PNG oder JPEG exportieren. Ab Pygame 1.8 funktionieren auch PNG und JPEG.
Wenn keine Dateierweiterung angegeben ist, wird standardmäßig eine .TGA-Datei verwendet.
Sie können sogar die "os" -Bibliothek zum Speichern in bestimmten Dateiverzeichnissen verwenden.
Ein Beispiel:
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"))
Das spart etwas auf der ‚Oberfläche‘ Oberfläche auf dem Desktop des Benutzers als pic.png
Zwei Fragen: 1. Ist pygame plattformunabhängig? 2. Können Sie einen Screenshot mit mehreren Monitoren erstellen? –
Soweit ich weiß, ist Pygame Plattform unabhängig. Dieser Code zeigt nur den Pygame-Bildschirm und nur den Pygame-Bildschirm an.Wenn Ihr Bildschirm sich über zwei Monitore erstreckt, würde ich denken, dass es möglich wäre (obwohl ich das nicht testen kann). Hoffe das hilft! – CPSuperstore
Sie das Modul Imagegrab verwenden können. ImageGrab funktioniert nur unter Windows, und Sie benötigen PIL (Pillow), um es zu verwenden. Hier ist ein kleines Beispiel:
import ImageGrab
snapshot = ImageGrab.grab()
save_path = "C:\\Users\\YourUser\\Desktop\\MySnapshot.jpg"
snapshot.save(save_path)
Ein weiterer Ansatz, der wirklich schnell ist das MSS Modul. Es unterscheidet sich von anderen Lösungen in der Art, dass es nur das ctypes
Standardmodul verwendet, so dass es keine großen Abhängigkeiten erfordert. Es ist O unabhängige und seine Verwendung ist einfach:
from mss import mss
with mss() as sct:
sct.shot()
Und findet die screenshot.png
Datei den Screenshot des ersten Monitors enthält. Es gibt eine Menge von possibile Anpassungen können Sie mit ScreenShot
Objekte und OpenCV/Numpy/PIL spielen/etc ..
Weitere Beispiele finden Sie in https://python-mss.readthedocs.io/en/dev/examples.html – tal
@tal: Ihr Link ist veraltet. Könnten Sie bitte aktualisieren? –
@ Tiger-222: Wie würden Sie mehrere Monitore bekommen? –
Für pyautogui Benutzer:
import pyautogui
screenshot = pyautogui.screenshot()
- 1. Holen Sie sich einen Screenshot von einer ASP.Net-Seite
- 2. Der schnellste Weg, um einen Screenshot mit Python auf Windows
- 3. Holen Sie sich aktuelle Windows-Benutzer VB.net
- 4. python- youtube. Holen Sie sich URL-Videoliste
- 5. Holen Sie sich Ihren Standort durch Python
- 6. Holen Sie sich einen bestimmten Eingang in Python
- 7. Holen Sie sich Python-Klasse von Element
- 8. Holen Sie sich aktuelle URL in Python
- 9. Holen Sie sich Timer-Ticks in Python
- 10. Holen Sie sich einen Stammdomäne auf asp.net
- 11. sidekiq Holen Sie sich einen Job sofort
- 12. Python Windows 7 Screenshot ohne PIL
- 13. os.path.islink unter Windows mit Python
- 14. Screenshot eines Fensters mit Python
- 15. Holen Sie sich einen bestimmten Teil einer sich verändernden Zeichenfolge
- 16. Holen Sie sich das Frequenzzählung mit Pandas Python
- 17. Holen Sie sich sofort Eltern-Tag mit BeautifulSoup in Python
- 18. Starten Sie einen Prozess mit Python und holen Sie sich die PID (Linux)
- 19. Holen Sie sich einen Kinder-Rekord mit Linq
- 20. Holen Sie sich Fotoreferenz
- 21. Python struct unter Windows
- 22. Holen Sie sich alle Elemente, die unter einem Cluster sind
- 23. Nan mit Python 2.5 unter Windows
- 24. Holen Sie sich die aktuelle Region von Windows Phone 8.1
- 25. Holen Sie sich eine Zelle des Datensatzes
- 26. Python os.path.join unter Windows
- 27. Holen Sie sich den Prozessnamen von pid
- 28. Holen Sie Webseiteninhalte mit Python?
- 29. Erkennen Sie einen Screenshot Android
- 30. Holen Sie sich Windows 8 aktuellen Akzentfarben von Desktop-App
Dieses ist für mich gearbeitet: http: // Stackoverflow. com/questions/4589206/python-windows-7-screenshot-ohne-pil – User