[Gelöst] Bildschirmfotos automatisch erstellen.

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
ottonormal
Beiträge: 3404
Registriert: 20.01.2014 22:25:29

[Gelöst] Bildschirmfotos automatisch erstellen.

Beitrag von ottonormal » 12.07.2022 09:47:16

Hallo,

ich suche ein Programm, das bei jeder kleinen Änderung auf dem Bildschirm automatisch ein Bildschirmfoto des kompletten Bildschirminhaltes erstellt. Das sollte dann auch automatisch in einem vorbestimmten Ordner gespeichert werden.
Das Programm darf auch gerne eine Bedienoberfläche haben.
Gibt es so etwas für Debian?
Zuletzt geändert von ottonormal am 15.07.2022 07:42:20, insgesamt 1-mal geändert.

rodney
Beiträge: 334
Registriert: 09.12.2016 04:15:59

Re: Bildschirmfotos automatisch erstellen.

Beitrag von rodney » 12.07.2022 20:22:26

Eine Moeglichkeit waere automatisch in festen Intervallen (z.b.jede Sekunde) Screenshots anfertigen und diese dann verwerfen/loeschen wenn identisch zum vorangegangenen Screenshot.

<SCNR>P.S. Ich kann den Sinn und Zweck dieses Wunsches nur erraten, aber eventuell koennte ein Keylogger dein Vorhaben komplettieren</SCNR>

Edit: Typo
Zuletzt geändert von rodney am 12.07.2022 22:01:29, insgesamt 1-mal geändert.

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Bildschirmfotos automatisch erstellen.

Beitrag von hikaru » 12.07.2022 21:44:35

rodneys Ansatz weitergedacht:
Im Extremfall wird da ein Video abgespielt, das der Framerate deiner Bildschirmfrequenz entspricht (z.B. 60Hz).
Das wiederum aufzunehmen gipfelt in einem Screenrecorder, nur dass beim Erstellen von Screenshots als Bilder (z.B. png oder jpeg) ein ziemlich schlechter Kompressionsalgorithmus verwendet würde, da ja nicht frameübergreifend komprimiert wird. Für jpeg hat dieser Ansatz sogar einen Namen: mjpeg
Ich vermute, wenn du das wirklich über Screenshots, also Bilder statt Video umsetzt, wirst du irgendwo einen Flaschenhals kriegen, der beim Erstellen der Bilder nicht mehr mit dem Bildschirminhalt mithalten kann.

Wenn du hingegen einen "richtigen" Screenrecorder nimmst, der ein Video in einem verbreiteten, frameübergreifenden und verlustbehafteten Codec aufnimmt, dann wird wiederum das anschließende Aussieben der uninteressanten Frames komplizierter, denn du wirst zwangsläufig Kompressionsartefakte haben, die zwei ursprüngliche gleiche Frames binär verschieden machen.
Da müsstest du dann über einen Bildähnlichkeitsalgorithmus ran, wo du mit einer Fuzzy-Logic einen Ähnlichkeitsschwellwert definieren musst, ab dem du ähnliche Frames als gleich definierst und verwirfst. Fuzzy-Logic ist immer fehleranfällig, sowohl für False Negatives als auch für False Positives.

Benutzeravatar
ottonormal
Beiträge: 3404
Registriert: 20.01.2014 22:25:29

Re: Bildschirmfotos automatisch erstellen.

Beitrag von ottonormal » 12.07.2022 23:32:23

Zum Verständnis:

So abenteuerlich ist mein Vorhaben nicht. Ich habe hier zwei selbsterstellte, unterschiedliche E-Bücher im FB2-Format. Die möchte ich zu PDFs umwandeln. Ich möchte aber, dass das dann genauso aussieht wie die FB2-Bücher im FBReader.

Nun kann ich die ganz einfach mit dem FBReader öffnen, mit den Pfeiltasten eine Seite nach der anderen anzeigen und jeweils ein Bildschirmfoto davon machen. Aus den Bildern nachher die PDF erstellen. Das ist simpel und funktioniert hervorragend.

Der Haken dabei ist nur, wenn ich etwa 100 oder mehr Seiten habe, komme ich regelmäßig ins "trudeln." Auf der Testatur immer abwechselnd "Print" und "Pfeil-runter." Eigentlich ja ganz einfach, ich fliege aber grundsätzlich irgendwann raus.

Das Problem ist dann, ich stelle das erst fest, wenn alles fertig ist. Dann fehlen Seiten oder es sind doppelte dabei.

Lacht mich aus, ich krieg es aber nicht hin. Zumindest bei dem Umfang den die Bücher haben. Deshalb kam mir die Idee mit der Automatik. Ich glaube auch nicht, dass es viel besser ginge mit Aufnahmen alle 2 Sekunden oder so.

Wenn es gar nicht anders ginge, wäre vielleicht auch eine Möglichkeit, das einzuteilen in einzelne Abschnitte.
Da ich aber so etwas öfters mache, wäre so eine Automatik schon eine gute Hilfe.

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Bildschirmfotos automatisch erstellen.

Beitrag von hikaru » 13.07.2022 01:00:03

Grober Ansatz:
Bau dir ein Script, das via Debianxdotool z.B. jede Sekunde* einmal die Pfeiltaste simuliert! Das schaltet in deinem geöffneten FBReader die Seite um. Nach dem Umschalten (und ggf. einer Karrenzzeit von z.B. 0,5 Sekunden*) macht das Script außerdem einen Screenshot (z.B. mit Debianscrot).
Du gehst derweil einen Kaffee trinken.

Nähere Details bei Bedarf, wenn ich wieder wach bin.


*) Die Zeiten sind geraten. Größere Abstände verringern die Fehleranfälligkeit und erhöhen den Kaffeeverbrauch. ;)

Benutzeravatar
ottonormal
Beiträge: 3404
Registriert: 20.01.2014 22:25:29

Re: Bildschirmfotos automatisch erstellen.

Beitrag von ottonormal » 13.07.2022 14:31:30

hikaru hat geschrieben: ↑ zum Beitrag ↑
13.07.2022 01:00:03
Bau dir ein Script,...
Vielen Dank! Ich glaube aber, dass mich das überfordert. Wenn ich Fachbegriffe wie "Script" höre, schaltet mein Denkapparat automatisch ab. DIE Automatik funktioniert jedenfalls! :roll:

Ich habe inzwischen aber einen Weg gefunden:
Ein E-Buch mit 405 Seiten im FBReader habe ich an markanten Stellen "geteilt" in Gruppen zu etwa 80 Seiten. Wenn ich die ersten ca. 80 Seiten fertig habe, mache ich eine Pause, gehe nach draußen und konzentriere mich 5 Minuten aus den Gesang der Amseln, die hier recht zahlreich ihre Flötentöne darbieten. (Kein Scherz! :wink: )

Dann mache ich weiter mit den nächsten ca. 80 Seiten usw.

Hört sich nicht sehr professionell an, funktionierte heute aber hervorragend.
Ein anderes Buch habe ich noch vor mir, ich denke aber, dass das genau so auch funktioniert. Zeit genug dafür habe ich ja.

Vielen Dank trotzdem für die Hilfe und Tipps! :THX:

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Bildschirmfotos automatisch erstellen.

Beitrag von hikaru » 13.07.2022 15:26:40

ottonormal hat geschrieben: ↑ zum Beitrag ↑
13.07.2022 14:31:30
Ein E-Buch mit 405 Seiten im FBReader habe ich an markanten Stellen "geteilt" in Gruppen zu etwa 80 Seiten. Wenn ich die ersten ca. 80 Seiten fertig habe, mache ich eine Pause, gehe nach draußen und konzentriere mich 5 Minuten aus den Gesang der Amseln, die hier recht zahlreich ihre Flötentöne darbieten. (Kein Scherz! :wink: )
Das ist ja furchtbar!

Ich habe gerade ein kleines Script (buch.sh) geschrieben:

Code: Alles auswählen

#!/bin/bash

for (( i=1; i<=$1; i++ ))
do
        scrot "$2_-_$i.png"
        xdotool key Page_Down
        sleep 0.5
done
Debianxdotool und Debianscrot müssen installiert sein.
Das Script erwartet als ersten Parameter die vorher abgezählte Seitenzahl des Dokuments und als zweiten Parameter einen Titel:

Code: Alles auswählen

sleep 3; bash buch.sh 18 "hallo welt"
Das "sleep 3; " steht vor dem Aufruf, damit ich genug Zeit habe um in das vorher in Debianatril auf Seite 1 geöffnete und in den Präsentationsmodus geschaltete 18-seitige PDF in den Vordergrund zu holen.
Dann macht das Script mit scrot einen Screenshot, drückt mit xdotool einmal virtuell Bild_Ab, wartet 0,5 Sekunden, damit atril genug Zeit hat umzuschalten und macht den nächsten Screenshot.
Nach rund 10 Sekunden liegen im aktuellen Verzeichnis 18 durchnummerierte PNG-Bilder die mit "hallo welt" anfangen.

Mein Test-PDF ist eine wissenschaftliche Präsentation und die 0,5 Sekunden Wartezeit sind für manche Folien mit komplexen Grafiken eher knapp bemessen. Ich würde also sicherheitshalber die Wartezeit erhöhen (z.B. 1 Sekunde).

Warum deine Lösung furchtbar ist?
Weil du dir mit einer stupiden Aufgabe so sehr das Gehirn zermarterst, dass du hinterher 5 Minuten Pause brauchst um wieder klar zu werden - nur um die stupide Aufgabe fortzusetzen.
Diesen Beitrag zu schreiben hat deutlich länger gedauert als das wirklich einfache Script (inklusive Recherche zur Syntax von xdotool und scrot) zusammenzuschmeißen. Es "fotografiert" dir (bei 1 Sekunde Pause) in 7 Minuten dein ganzes 400-Seiten-Dokument ab, während du ganz ohne Schädelbrummen mit Kaffeetasse in der Hand den Amseln lauschen kannst.

Huo
Beiträge: 614
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Bildschirmfotos automatisch erstellen.

Beitrag von Huo » 13.07.2022 15:51:25

Schönes Skript :THX: ! Bei scrot fehlt aber wohl noch die Option -u, damit nicht der ganze Bildschirm, sondern nur der Inhalt des fokussierten Fensters aufgenommen wird.

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Bildschirmfotos automatisch erstellen.

Beitrag von hikaru » 13.07.2022 16:05:48

Ja, da kann man sicher noch vieles verbessern:
- formatierte Seitenzahlen
- automatische Fehlererkennung falls die Pause doch zu kurz ist
- vielleicht sogar automatische Anpassung der Pause
etc.

Benutzeravatar
ottonormal
Beiträge: 3404
Registriert: 20.01.2014 22:25:29

Re: Bildschirmfotos automatisch erstellen.

Beitrag von ottonormal » 13.07.2022 21:17:19

Vielen Dank, ich werde das mit einem nächsten Fall mal versuchen.
Im Moment bin ich immer noch von den Amseln begeistert. :wink:

Aber "furchtbar" finde ich das wirklich nicht. Es hat doch zum Ziel geführt.

Wenn der ganze Bildschirm aufgenommen wird, ist das auch in Ordnung. Das später mit der Stapelverarbeitung von XnView MP nachzuarbeiten ist ja ein Klacks.
"scrot" und "xdotool" sind/waren bei mir schon installiert.

Benutzeravatar
ottonormal
Beiträge: 3404
Registriert: 20.01.2014 22:25:29

Re: Bildschirmfotos automatisch erstellen.

Beitrag von ottonormal » 15.07.2022 07:41:36

hikaru hat geschrieben: ↑ zum Beitrag ↑
13.07.2022 15:26:40
Ich habe gerade ein kleines Script (buch.sh) geschrieben...
So, die Amseln hatten mir im Moment nichts neues mehr vorzupfeifen, deshalb habe ich das nun mal mit dem Script probiert.

Was soll ich sagen, ganz wider erwarten, das funktioniert!!! :mrgreen:
Und das bei MIR!!!
Ich bin total begeistert, ganz vielen Dank dafür, Du bist der Größte! :THX:

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Bildschirmfotos automatisch erstellen.

Beitrag von hikaru » 15.07.2022 10:58:49

Danke für die Blumen! :)

Ich habe noch etwas weitergespielt:

Code: Alles auswählen

#!/bin/bash

for (( i=1; i<=$1; i++ ))
do
        seite=$(printf "%0${#1}d" $i)
        scrot -a 200,100,800,600 "$2_-_$seite.png"
        [ $i -gt 1 ] &&  diff -q "$2_-_$seite_alt.png" "$2_-_$seite.png" > /dev/null && \
                echo "Warnung! $2_-_$seite_alt.png und $2_-_$seite.png sind gleich. Pause zwischen Screenshots erhöhen und Durchlauf wiederholen?"
        xdotool key Page_Down
        seite_alt=$seite
        sleep 0.3
done
Änderungen gegenüber der ursprünglichen Version:
1. Seitenzahlen werden jetzt formatiert ausgegeben, abhängig von der Gesamtzahl der Seiten.

2. Nach jedem Screenshot (ab Seite 2) wird geprüft, ob die neue Seite sich von der vorhergehenden unterscheidet. Falls nicht, wird eine Warnung ausgegeben, denn es wäre zu vermuten, dass die Pause zu kurz war. Das ist in meinem Beispiel tatsächlich der Fall, denn ich habe absichtlich um das zu provozieren die Pause auf 0,3 Sekunden reduziert:

Code: Alles auswählen

$ sleep 3; bash buch.sh 18 "hallo welt"
Warnung! hallo welt_-_06.png und hallo welt_-_07.png sind gleich. Pause zwischen Screenshots erhöhen und Durchlauf wiederholen?
Warnung! hallo welt_-_07.png und hallo welt_-_08.png sind gleich. Pause zwischen Screenshots erhöhen und Durchlauf wiederholen?
Warnung! hallo welt_-_09.png und hallo welt_-_10.png sind gleich. Pause zwischen Screenshots erhöhen und Durchlauf wiederholen?
Warnung! hallo welt_-_10.png und hallo welt_-_11.png sind gleich. Pause zwischen Screenshots erhöhen und Durchlauf wiederholen?
Warnung! hallo welt_-_11.png und hallo welt_-_12.png sind gleich. Pause zwischen Screenshots erhöhen und Durchlauf wiederholen?
Warnung! hallo welt_-_12.png und hallo welt_-_13.png sind gleich. Pause zwischen Screenshots erhöhen und Durchlauf wiederholen?
Im Prinzip könnte man hier das Script auch abbrechen oder die Pause automatisch erhöhen und es ab dem Fehler wiederholen. Ich habe mich für eine Warnung, also einen nicht-fatalen Fehler entschieden, weil es durchaus denkbar wäre, dass ein Dokument zwei aufeinanderfolgende identische Seiten hat.

Was ich hier nicht verstehe ist, warum mein diff so funktioniert und nicht andersherum. Bei Gleichheit ist der Exit-Code=0 und bei Unterschieden =1. Daher würde ich eigentlich erwarten, dass meine if-Abfrage (ohne Negation) bei unterschiedlichen Dateien anschlägt. Sie schlägt aber bei gleichen Dateien an, weshalb ich die Negation entfernt habe. :?

3. Inspiriert durch Huos "scrot -u"-Hinweis habe ich mir die Manpage von scrot genauer angesehen und den Parameter -a gefunden, der es erlaubt, nicht nur ein bestimmtes Fenster, sondern direkt ein Rechteck aus dem Bildschirm auszuschneiden (hier einen Ausschnitt von 800x600 Pixeln an der Position x=200, y=100). Das direkt hier im Script zu machen, kann anschließende Arbeitsschritte auf den Bildern vereinfachen.
Für den Praxiseinsatz würde man so einen Ausschnitt sicher von außen an das Script übergeben, wie die Seitenzahl. Hier ist das bisher nur eine Demonstration der Möglichkeiten.
Auch die Pausenzeit könnte man natürlich von außen steuern.

Benutzeravatar
ottonormal
Beiträge: 3404
Registriert: 20.01.2014 22:25:29

Re: [Gelöst] Bildschirmfotos automatisch erstellen.

Beitrag von ottonormal » 15.07.2022 12:07:50

Vielen Dank! Ich habe mir das gespeichert, ob ich das wirklich mal brauchen werde weiß ich nicht. So, wie ich es jetzt habe, ist es für meinen Bedarf absolut perfekt. Ich habe das jetzt noch mal mit verschiedenen E-Buch- und auch PDF-Dateien getestet, absolut super. :THX:
Und auch sogar für mich machbar! :wink:

Antworten