Tworzę moduł raportowania Beta Testerów, dzięki czemu mogą przesłać swoje komentarze do mojego oprogramowania, ale chciałbym mieć możliwość dołączenia zrzutu ekranu do raportu. Jak zrobić zrzut ekranu z Pythonem w systemie Windows? Znalazłem kilka przykładów na Linuksie, ale nie miałem dużo szczęścia w systemie Windows.Zyskaj zrzut ekranu na Windowsie z Pythonem?
Odpowiedz
Warto zauważyć, że ImageGrab działa tylko na MSWindows.
Aby uzyskać zgodność z różnymi platformami, najlepiej wykorzystać daną bibliotekę 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: obiekt 'module' nie ma atrybutu 'App' –
app = wx.App() w przeciwnym razie możesz uzyskać: wx._core.PyNoAppError: The Obiekt wx.App musi zostać utworzony jako pierwszy! Pobierz również wxPython stąd: http://wxpython.org/download.php Z jakiegoś powodu nie jest to ten sam "wx", jeśli po prostu robisz "pip install wx" –
Okna CLI wychodzące puste – olekb
w prosty sposób zrobić zrzut ekranu jest przez Pygame.
pygame.image.save(Surface, filename)
Gdzie Surface "to powierzchnia wszystkich przyjmowanych zrzut ekranu i„filename”to ścieżka, nazwa, typ i gdzie można zaoszczędzić Thew obrazu.
Można eksportować jako pliki BMP, TGA, PNG lub JPEG. Począwszy od wersji Pygame 1.8, PNG i JPEG również działają.
Jeśli nie zostanie określone rozszerzenie pliku, będzie domyślnie plik .TGA.
Można nawet użyć biblioteki "os" do zapisania w określonych katalogach plików.
Przykład:
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"))
Oszczędza to wszystko na 'powierzchni' Surface na pulpicie użytkownika jako pic.png
Dwa pytania: 1. Czy platforma pygame jest niezależna? 2. Czy możesz uzyskać zrzut ekranu z wieloma monitorami? –
O ile mi wiadomo, Pygame jest platformą niezależną. Ten kod spowoduje zeskanowanie tylko ekranu pygame i tylko ekranu pygame.Jeśli twój ekran obejmuje dwa monitory, sądzę, że byłby w stanie (chociaż nie jestem w stanie tego przetestować). Mam nadzieję że to pomoże! – CPSuperstore
można użyć modułu ImageGrab. ImageGrab działa tylko w systemie Windows i potrzebujesz PIL (Poduszka), aby go użyć. Oto mały przykład:
import ImageGrab
snapshot = ImageGrab.grab()
save_path = "C:\\Users\\YourUser\\Desktop\\MySnapshot.jpg"
snapshot.save(save_path)
Innym podejściem, które jest bardzo szybki jest moduł MSS. Różni się od innych rozwiązań tym, że używa tylko standardowego modułu ctypes
, więc nie wymaga dużych zależności. Jest to niezależny system operacyjny i jego zastosowanie jest proste:
from mss import mss
with mss() as sct:
sct.shot()
I tylko znaleźć plik screenshot.png
zawierający zrzut ekranu z pierwszego monitora. Istnieje wiele possibile dostosowań, można grać z ScreenShot
obiektów i OpenCV/NumPy/PIL/etc ..
zobacz więcej przykładów w https://python-mss.readthedocs.io/en/dev/examples.html – tal
@tal: Twój link jest nieaktualny. Czy mógłbyś zaktualizować? –
@ Tiger-222: Jak otrzymasz wiele monitorów? –
Dla użytkowników pyautogui:
import pyautogui
screenshot = pyautogui.screenshot()
- 1. Guppy/Heapy na Windowsie z Pythonem 2.7.6
- 2. Instalacja Pymedia na Windowsie z Pythonem 2.6
- 3. Zrzut ekranu z kamery internetowej
- 4. Zrzut ekranu z animacją rdzenia na iPadzie
- 5. Zrzut ekranu okna z pytonem:
- 6. jak zrobić zrzut ekranu?
- 7. Jak programować zrzut ekranu?
- 8. Zrzut ekranu w Haskell?
- 9. Opóźnienie zrzut ekranu iOS
- 10. Zrzut ekranu pokazuje czarny
- 11. Android wykonuje zrzut ekranu
- 12. Brakujący zrzut ekranu aplikacji na iOS
- 13. Zrzut ekranu Pythona 2+ monitorów (Windows)
- 14. iPad 3 powolny zrzut ekranu
- 15. Uzyskaj zrzut ekranu kontrolki przeglądarki?
- 16. Zrzut ekranu ignoruje niektóre okna
- 17. Zrzut ekranu z całego ekranu przy użyciu html5/javascript?
- 18. Zrzut ekranu Firebase Query zero?
- 19. Zrzut ekranu panelu z otwartymi comboboxami
- 20. Jak zrobić zrzut ekranu z części UIView?
- 21. Uzyskaj zrzut ekranu określonej aplikacji
- 22. Zrzut ekranu z filmem HTML5 na płótnie za pomocą CORS
- 23. Instalacja Psycopg na Windowsie
- 24. Pobierz zrzut ekranu ze strony ASP.Net
- 25. Jak wykonać zrzut ekranu renderowanej strony HTML?
- 26. Tworzenie cały zrzut ekranu strony używając QWebPage
- 27. Biorąc zrzut ekranu z jednej aplikacji w widoku z JavaScript
- 28. programowalny zrzut ekranu przedstawiający fałszywego sąsiada
- 29. Zrzut ekranu procesu w ramach usługi Windows
- 30. Zrzut ekranu iOS SDWebage w UITableViewCell
Ten pracował dla mnie: http: // stackoverflow. com/questions/4589206/python-windows-7-screenshot-without-pil – User