Ich möchte einen Screenshot über ein Python-Skript machen und ihn unauffällig speichern.
Ich interessiere mich nur für die Linux-Lösung und sollte jede X-basierte Umgebung unterstützen.
python
linux
screenshot
skyronic
quelle
quelle
Antworten:
Dies funktioniert ohne Verwendung von scrot oder ImageMagick.
Ausgeliehen von http://ubuntuforums.org/showpost.php?p=2681009&postcount=5
quelle
Stellen Sie alle Antworten in einer Klasse zusammen. Gibt das PIL-Bild aus.
quelle
getScreenByWx
Methode schlägt mit fehlwx._core.PyNoAppError: The wx.App object must be created first!
. Komischerweise funktioniert der Code einwandfrei, wenn Sie ihn Zeile für Zeile in die Python-Shell eingeben, aber in einem Skript schlägt er fehl.getScreenByWx
sollten Sie a) ersetzenmyBitmap
durchbmp
und b) Speichernwx.App()
in eine Variable. IngetScreenByGtk
ersetzen(pb != None)
zupb is None
. Verwenden Sie Qt nicht. Sie können also nicht zweimal erstellen.QApplication
Ihre App stürzt ab, wenn Sie versuchen, sie zum zweiten Mal zu erstellen.Nur der Vollständigkeit halber: Xlib - Aber es ist etwas langsam, wenn der gesamte Bildschirm erfasst wird:
Man könnte versuchen, einige Typen in die Engpassdateien in PyXlib zu werfen und sie dann mit Cython zu kompilieren. Das könnte die Geschwindigkeit etwas erhöhen.
Bearbeiten: Wir können den Kern der Funktion in C schreiben und ihn dann in Python von ctypes verwenden. Hier ist etwas, das ich zusammen gehackt habe:
Und dann die Python-Datei:
quelle
#include <X11/Xutil.h>
stattdessen#include <X11/Xlib.h>
. Auch zum Kompilieren musste ich so ans-lX11
Ende gehen :gcc -shared -O3 -Wall -fPIC -Wl,-soname,prtscn -o prtscn.so prtscn.c -lX11
.Dieser funktioniert unter X11 und vielleicht auch unter Windows (jemand, bitte überprüfen). Benötigt PyQt4 :
quelle
Ich habe ein Wrapper-Projekt ( Pyscreenshot ) für Scrot, Imagemagick, Pyqt, WX und Pygtk. Wenn Sie eine davon haben, können Sie sie verwenden. Alle Lösungen sind in dieser Diskussion enthalten.
Installieren:
Beispiel:
quelle
pyscreenshot.tempexport.RunProgError: No protocol specified giblib error: Can't open X display. It *is* running, yeah?" timeout_happened=False>
Plattformübergreifende Lösung mit wxPython :
quelle
Dies erfordert die Python Imaging Library
quelle
Sie können dies verwenden
quelle
etwas spät, aber egal, man ist einfach
quelle
Ich konnte unter Linux keinen Screenshot mit Pyscreenshot oder Scrot machen, da die Ausgabe
pyscreenshot
nur eine PNG-Bilddatei mit schwarzem Bildschirm war.Aber Gott sei Dank gab es eine andere sehr einfache Möglichkeit, Screenshots unter Linux aufzunehmen, ohne etwas zu installieren. Geben Sie einfach den folgenden Code in Ihr Verzeichnis ein und führen Sie ihn aus
python demo.py
Es gibt auch viele verfügbare Optionen für
gnome-screenshot --help
quelle
Für diese Autopy gibt es ein Python-Paket
Das Bitmap-Modul kann zum Screen Grabbing (bitmap.capture_screen) verwendet werden. Es ist eine Multiplateform (Windows, Linux, Osx).
quelle
Aus diesem Thread :
quelle
Das ist eine alte Frage. Ich möchte es mit neuen Tools beantworten.
Funktioniert mit Python 3 (sollte mit Python 2 funktionieren, aber ich habe es nicht getestet) und PyQt5.
Minimales Arbeitsbeispiel. Kopieren Sie es in die Python-Shell und erhalten Sie das Ergebnis.
quelle
Versuch es:
quelle
while
Schleife, die niemals beendet wird (und1
stattdessen verwendetTrue
),if (pb != None):
statt nurif pb:
einige sinnlose Rohzeichenfolgen hat.