Screenshots automatisch alle x Sekunden schießen

import erzeugt auch Screenshots
import erzeugt auch Screenshots
04.12.2012 11:34

Für Linux existiert ein ganzer Haufen netter Screenshot-Programme. Diese schießen jedoch durchweg immer nur ein Foto, ihre schicke Benutzeroberfläche erfordert zudem den Eingriff des Benutzers. Das ist jedoch alles andere als komfortabel, wenn man automatisch eine Bilderserie aufnehmen möchte – beispielsweise weil man alle 3 Sekunden einen Screenshot von einem laufenden Spiel aufzeichnen möchte. Im besten Fall reicht ein Tastendruck, um ein Bild zu erzeugen. Wer denkt aber schon mitten im Gefecht daran, eine Taste zu drücken?

Importeur

Glücklicherweise gibt es die Bash und das kleine Programm import aus ImageMagick. Das letztgenannte Helferlein schießt netterweise auch Screenshots. Damit kann man sich etwa das folgende kleine Skript basteln, das alle 3 Sekunden einen Screenshot erstellt und im Verzeichnis Bilder ablegt:

#!/bin/sh
ANZAHL="100" # Anzahl der Screenshots
SEKUNDEN="3" # Schieße Screenshot alle … Sekunden
VERZEICHNIS="/home/tim/Bilder" # Speicherort
DATEINAME="screenshot" # Dateiname der Bilder

for i in `seq 1 $ANZAHL`
do
 import -window root $VERZEICHNIS/$DATEINAME$i.png
 sleep $SEKUNDEN
done

exit 

Zu Beginn legt das Skript ein paar Variablen mit den Eckdaten fest: ANZAHL bestimmt, wie viele Screenshots das Skript schießen soll. Zwischen zwei Screenshots vergehen die hinter SEKUNDEN festgelegten Sekunden. Die geschossenen Screenshots landen im angegebenen VERZEICHNIS unter dem DATEINAMEN.

Es folgt schließlich eine Schleife, die i von 1 bis ANZAHL hochzählt. import schießt dann vom gesamten Bildschirm (-window root) einen Screenshot und legt ihn im vorgegebenen Verzeichnis im PNG-Format ab. Wer ein anderes Dateiformat bevorzugt, muss nur die Endung (.png) entsprechend austauschen. Jeder Screenshot trägt zudem im Dateinamen eine fortlaufende Nummer. Dazu hängt das Skript einfach den Wert von i an den Dateinamen an. Abschließend legt sleep das Skript für die eingestellten 3 Sekunden schlafen.

import schießt brav einen Screenshot nach dem anderen.

Schneiderei

Wenn man nur einen Ausschnitt vom kompletten Bildschirm haben möchte, hängt man import noch den Parameter -crop mit der Auflösung an. Der folgende Befehl fotografiert etwa nur ein 1024 mal 768 Pixel großes Rechteck in der linken oberen Bildschirmecke:

import -window root -crop 1024x768-0+0 $VERZEICHNIS/$DATEINAME$i.png

Das Skript hat allerdings einen kleinen Nachteil: Sobald image einen Screenshot schießt, friert der Bildschirm für kurze Zeit ein. Das führt gerade in schnellen Spielen gerne schon einmal dazu, dass man mit der Figur am Ziel vorbei springt oder danebenschießt.

Abschließend noch ein Warnhinweis: Das obige Skript ist einfach gestrickt. Beispielsweise überschreibt es ohne Rückfrage bereits vorhandene Dateien mit dem gleichen Dateinamen. Bevor man also das Skript anwirft, sollte man sicherstellen, dass das Verzeichnis leer ist – oder eine entsprechende Abfrage in das Skript einbauen.

Eine alternative Lösung zu import wären übrigens Screenrecoder, also Programme, die gleich den ganzen Desktop abfilmen. Diese brauchen allerdings während der Ausführung eine relativ hohe Rechenleistung und erzeugen in der Regel ziemlich große Dateien. Im Gegenzug kann man sich die benötigten Bilder mit einem Videoschnittprogramm nachträglich frei auswählen und speichern.


Kommentare
schön - aber wozu das Script?
tuxator (unangemeldet), Mittwoch, 05. Dezember 2012 13:09:46
Ein/Ausklappen

Ein simples

import -window root -snaps 5 -pause 3 snapshot.jpg

würde reichen. Erstellt 5 Screenshots mit je 3 Sekunden Pause im aktuellen Verzeichnis.


Bewertung: 166 Punkte bei 143 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: schön - aber wozu das Script?
Tim Schürmann, Mittwoch, 05. Dezember 2012 16:18:23
Ein/Ausklappen

Weil man das Skript noch an die eigenen Bedürfnisse anpassen und ausbauen kann? :)

Darüber hinaus sind snaps und pause erst in neueren ImageMagick-Versionen vorhanden, die Seite zu import auf imagemagick.org führt die beiden Parameter (noch) gar nicht:

http://www.imagemagick.org/script/import.php

Aber stimmt schon - in seiner jetzigen Form könnte man es auch einfach durch den einzelnen Befehl ersetzen.

Ergänzung: Wer noch weitere Methoden kennt, automatisiert (im Hintergrund) einen Screenshot zu erstellen, dann immer her damit. :)


Bewertung: 151 Punkte bei 140 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: schön - aber wozu das Script?
crs (unangemeldet), Dienstag, 01. Oktober 2013 00:36:22
Ein/Ausklappen

Der Skript funktioniert für mich wuderbar,
Habe noch die einfachen Zeilen

convert -scale 50% $VERZEICHNIS/$DATEINAME$i.png $VERZEICHNIS/$DATEINAME$i.jpg
convert -quality 10 $VERZEICHNIS/$DATEINAME$i.png $VERZEICHNIS/$DATEINAME$i.jpeg
rm $VERZEICHNIS/$DATEINAME$i.png
rm $VERZEICHNIS/$DATEINAME$i.jpg

hinzugefügt.

Die -crop 300x500+980+1400 kommt auch hilfreich daher.

Danke für den Tip


Bewertung: 277 Punkte bei 63 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Aktuelle Fragen

Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 0 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...
Tinte sparen bei neuem Drucker
Lars Schmitt, 30.11.2017 17:43, 2 Antworten
Hi Leute, ich habe mir Anfang diesen Monats einen Tintenstrahldrucker angeschafft, der auch su...
Für Linux programmieren
Alexander Kramer, 25.11.2017 08:47, 3 Antworten
Ich habe einen Zufallsgenerator entworfen und bereits in c++ programmiert. Ich möchte den Zufalls...

Stellenmarkt

Jetzt auf den Mailinglisten

Re: [EasyLinux-Ubuntu] Liste_der_kompatiblen_Drucker_für Linux
Hartmut Haase, 11.12.2017 16:52
Ergänzen möchte ich, daß alle HP-Drucker unter Linux laufen (HPLIP). Und die gibt es hin und wieder auch bei...
Re: [EasyLinux-Ubuntu] Liste_der_kompatiblen_Drucker_für_Linux
Nguyen Dong Loan, 11.12.2017 16:42
Am Montag, den 11.12.2017, 08:46 +0100 schrieb Christoph Walter: > Mein BROTHER-DRUCKER DCP-195C ist defek...
Re: [EasyLinux-Ubuntu] Drucker "spinnt": Kyocera FS-1010
Nguyen Dong Loan, 11.12.2017 16:39
Am Montag, den 11.12.2017, 11:37 +0100 schrieb Rainer: Angesichts des vermutlichen Alters von 15 Jahren u...
Re: [EasyLinux-Ubuntu] Liste_der_kompatiblen_Drucker_für Linux
Hartmut Haase, 11.12.2017 16:25
Hallo Christoph, Du könntest ja Mal Cups starten und nachsehen, welche Drucker unterstützt werden. -- Vi...
Re: [EasyLinux-Ubuntu] Liste_der_kompatiblen_Drucker_für Linux
Frank von Thun, 11.12.2017 15:07
Am 11.12.2017 um 12:18 schrieb Uwe Herrmuth: > Hallo Christoph, > > Christoph schrieb am 11.12....