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: 113 Punkte bei 24 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: 126 Punkte bei 27 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: 120 Punkte bei 10 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 4 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Admin Probleme mit Q4os
Thomas Weiss, 30.03.2015 20:27, 6 Antworten
Hallo Leute, ich habe zwei Fragen zu Q4os. Die Installation auf meinem Dell Latitude D600 verl...
eeepc 1005HA externer sound Ausgang geht nicht
Dieter Drewanz, 18.03.2015 15:00, 1 Antworten
Hallo LC, nach dem Update () funktioniert unter KDE der externe Soundausgang an der Klinkenbuc...
AceCad DigiMemo A 402
Dr. Ulrich Andree, 15.03.2015 17:38, 2 Antworten
Moin zusammen, ich habe mir den elektronischen Notizblock "AceCad DigiMemo A 402" zugelegt und m...
Start-Job behindert Bootvorgang, Suse 13.2, KDE,
Wimpy *, 20.02.2015 10:32, 4 Antworten
Beim Bootvorgang ist ein Timeout von 1 Min 30 Sec. weil eine Partition sdb1 gesucht und nicht gef...
Konfiguration RAID 1 mit 2 SSDs: Performance?
Markus Mertens, 16.02.2015 10:02, 6 Antworten
Hallo! Ich möchte bei einer Workstation (2x Xeon E5-2687Wv3, 256GB RAM) 2 SATA-SSDs (512GB) al...

Jetzt auf den Mailinglisten

Re: [EasyLinux-Ubuntu] Nvidia X740XL
Gerhard Blaschke, 21.04.2015 01:08
Nachtrag: Am 21.04.2015 um 00:34 schrieb Gerhard Blaschke: > Am 20.04.2015 um 19:59 schrieb Richard Krau...
Re: [EasyLinux-Ubuntu] Nvidia X740XL
Gerhard Blaschke, 21.04.2015 00:34
Am 20.04.2015 um 19:59 schrieb Richard Kraut: > Am Sonntag, den 19.04.2015, 15:59 +0200 schrieb Gerhard Bl...
Re: [EasyLinux-Ubuntu] wie_als_root_ausführen?
Gerhard Blaschke, 20.04.2015 23:03
Am 20.04.2015 um 19:04 schrieb Heiko Ißleib: > Hallo Gerhard. > > Ich vermute,Du weißt schon,wi...
Re: [EasyLinux-Ubuntu] Nvidia X740XL
Gerhard Blaschke, 20.04.2015 23:01
Am 20.04.2015 um 19:59 schrieb Richard Kraut: > Am Sonntag, den 19.04.2015, 15:59 +0200 schrieb Gerhard Bl...
Re: [EasyLinux-Ubuntu] Nvidia X740XL
Richard Kraut, 20.04.2015 19:59
Am Sonntag, den 19.04.2015, 15:59 +0200 schrieb Gerhard Blaschke: > Der eingestellte Treiber funktioniert...