Screenshots machen und zwar viele und speichern

benjamin222

Mitglied
Hallo,

ich versuche gerade screenshots mit Java zu machen. Per Robotklasse komme ich ohne speichern auf 30 Screenshots pro Sekunde. Mit Speichern sind es nur noch 7.
Das geht ja bestimmt viel besser, aber wie?

Java:
try {
            Robot robot=new Robot();
            Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
            Rectangle rect = new Rectangle(dim);
            int count=0;

            long start=System.currentTimeMillis();
            while(count < 100){

                BufferedImage buff= robot.createScreenCapture(rect);
              // ImageIO.write(buff,"PNG",new File("D:\\Bilder\\screenshot.png"));


                count++;


            }
            long end=System.currentTimeMillis();
            System.out.println(100*1000/(end-start));
        } catch (Exception e) {
            e.printStackTrace();
        }
 

Barista

Top Contributor
Naheliegend wäre die Speicherung der Unterschiede je Bild ab einem einmaligen (seltenen) Vollbild.

Leider steht dann die Bildkomprimierung nicht mehr zur Verfügung.

Aber bei Zip (gibts auch im JDK) gibts auch leistungsfähige Komprimierung.

Wenn das Diff zwischen zwei Bildern zu groß wird (zum Bsp. Anzahl unterschiedlicher Pixel) kann man eventuell wieder ein Vollbild speichern.

Wenn der Zeitraum der Aufnahme kurz ist, kann man eventuell die Bilder im Speicher halten.
 

Barista

Top Contributor
Eventuell ist Java einfach zu langsam dafür.

Für Win10 gibt es auch eine Möglichkeit den Bildschirm als Film aufzunehmen.


Sollte ich vor einem Jahr oder so mal machen, dann funktionierte das Abspielen nicht.
Irgendjemand meinte, dafür müsste man einen bestimmten Codec installieren.
Hatte sich dann aber erledigt und ich habe mich nicht weiter darum gekümmert.
 

Barista

Top Contributor
Ich komme mir hier zwar ein bisschen vor wie jemand, den man früher für bekloppt gehalten hat, von dem man aber heute glauben würde, er telefoniert, aber trotzdem:

Eventuell solltest Du die Bilder im Format BMP speichern, weil dies eine einfache run length encoding Komprimierung verwendet statt png-Komprimierung:


Die Frage ist, was ist schneller, die Disk oder die Komprimierung (welche Disk-Datensurchsatz spart).
 

Barista

Top Contributor
Das Selbstgespräch geht weiter.

Wie man im Netz findet, nutzt der PNG-Algorithmus Zip-ähnliche Algorithmen wie Huffmann und Deflating.

Also nutzt der PNG-Code im JDK wahrscheinlich auch die Zip-Lib im JDK.

Möglicherweise nutzt die Zip-Lib im JDK oder eben der PNG-Code im JDK mehrere Prozessor-Kerne aus.

Das müsste man unter Win in der Leistungsanzeige im Taskmanager sehen.

Falls nicht alle Kerne ausgenutzt werden, sollte man über Multi-Threading die ungenutzten Kerne in Anspruch nehmen.

Dabei natürlich die im Multi-Threading üblichen Performance-Tricks wie Thread-Pool anwenden.
 

Thallius

Top Contributor
warum Sind Videos wohl in MPEG und nicht in png gespeichert? durch Die nicht verlustfreie Komprimierung entstehen viel kleiner Bilder welche sich problemlos auf die Platte schreiben lassen. Noch dazu kann man festlegen wieviele key- und wieviele I-frames man haben möchte und damit noch einmal die Datenrate gewaltig minimieren. Weiterhin ist jpeg Komprimierung (welche MPEG unterliegt) um einiges schneller als png.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Screenshots verhindern? Java Basics - Anfänger-Themen 5
H Generics machen mich verrückt Java Basics - Anfänger-Themen 8
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
A Wie könnte man diesen Code kürzer machen ? Java Basics - Anfänger-Themen 7
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
U Char zu einem String machen Java Basics - Anfänger-Themen 1
N Java-Code abwärtskompatibel machen Java Basics - Anfänger-Themen 4
C Was machen mit nicht mehr verwendeten Instanzen ? Java Basics - Anfänger-Themen 18
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
M Ist es möglich, das größte und zweitgrößte element in einem Array mit nur einer Schleife ausfindig zu machen ? Java Basics - Anfänger-Themen 19
H Array Slot frei machen Java Basics - Anfänger-Themen 3
H Array Slot frei machen Java Basics - Anfänger-Themen 4
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
F JTextField Kursiv und Fett machen Java Basics - Anfänger-Themen 4
F Aufgabenstellung genauer formulieren/verständlicher machen? Java Basics - Anfänger-Themen 10
A Ich habe das Gefühl etwas grundlegendes falsch zu machen Java Basics - Anfänger-Themen 6
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
I JFrame proportional verkleinerbar machen Java Basics - Anfänger-Themen 3
F Aus geraden eine Kurve machen Java Basics - Anfänger-Themen 6
G Boolschen Ausdruck true machen Java Basics - Anfänger-Themen 2
M Java Methode editierbar machen im Programm Java Basics - Anfänger-Themen 62
T Wie weiter machen? Java Basics - Anfänger-Themen 9
G Erste Schritte Fehler ausfindig machen Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
DaCrazyJavaExpert JScollPane scrollbar unsichtbar machen Java Basics - Anfänger-Themen 2
P Aus einem Array zwei Arrays machen Java Basics - Anfänger-Themen 3
G Objekt Instanziierung von Eingabe abhängig machen Java Basics - Anfänger-Themen 5
B Unique ID nochmal Unique machen Java Basics - Anfänger-Themen 20
S JLabel sichtbar machen/GUI Java Basics - Anfänger-Themen 3
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
W Wie kann man zufällige Anordnungen machen? Java Basics - Anfänger-Themen 1
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
D Objekt Transparenter machen Java Basics - Anfänger-Themen 1
S OOP Frage: Methoden nur bei bestimmten Gegebenheiten aufrufbar machen? Java Basics - Anfänger-Themen 4
A Wie kann ich mein Programm noch effizienter machen? Java Basics - Anfänger-Themen 1
S BufferedImage heller/dunkler machen mit RescaleOp Java Basics - Anfänger-Themen 2
I OOP Wie kann ich diesen Code 'Objektorientiert machen' ? Java Basics - Anfänger-Themen 1
C Mit Java Musik machen? Java Basics - Anfänger-Themen 86
TheSorm String zu Methode machen Java Basics - Anfänger-Themen 1
S Funktionen/Atrribute nur innerhalb einer package Zugänglich machen Java Basics - Anfänger-Themen 8
O Zwei Methoden zueinander Thread-safe machen (Locken) Java Basics - Anfänger-Themen 9
Y Eingabe-Formular mit JSP dynamisch machen - j/n/wie? Java Basics - Anfänger-Themen 2
M Ausführen rückgängig machen Java Basics - Anfänger-Themen 2
K RGB Wert Heller machen (Dunkler machen klappt) Java Basics - Anfänger-Themen 2
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T Text auf der Konsole farbig machen Java Basics - Anfänger-Themen 6
O Eigenen Addon-Loader machen? Java Basics - Anfänger-Themen 33
L Auf herunterfahren des PCs reagieren und Datensatz update machen Java Basics - Anfänger-Themen 15
J jar Dateien global erreichbar machen Java Basics - Anfänger-Themen 3
I Objekte verfügbar machen Java Basics - Anfänger-Themen 5
D Panel sichtbar/unsichtbar machen im ActionListener Java Basics - Anfänger-Themen 3
R Anzahl der ineinander verschachtelten for-Schleifen von Variable abhängig machen Java Basics - Anfänger-Themen 5
K Vererbung Methoden in klassen auslagern und in mehreren Klassen verfügbar machen Java Basics - Anfänger-Themen 8
B Datentypen Casts typesafe machen? ("unchecked") Java Basics - Anfänger-Themen 10
A Objekt global verfügbar machen Java Basics - Anfänger-Themen 4
B Threads Geschwindigkeit der Befehle auf verschiedenen PCs gleich machen Java Basics - Anfänger-Themen 3
H Ausgabe nebenläufig machen Java Basics - Anfänger-Themen 6
S Erste Schritte import für andere Klassenfiles verfügbar machen? (Java unter Eclipse) Java Basics - Anfänger-Themen 8
GianaSisters Methoden eigenes TableModel -> removeRow möglich machen Java Basics - Anfänger-Themen 30
G Eingabe beliebig lang machen Java Basics - Anfänger-Themen 8
S Kapselung Member korrekt nach aussen verfügbar machen Java Basics - Anfänger-Themen 6
C Threads Methode unterbrechbar machen Java Basics - Anfänger-Themen 12
S Bytecode sichtbar machen Java Basics - Anfänger-Themen 2
L Aus ArrayInformationen Objekt machen? Java Basics - Anfänger-Themen 6
E Klasse abstract machen Java Basics - Anfänger-Themen 3
K Klasse für andere Klassen sichtbar machen Java Basics - Anfänger-Themen 6
P Aus einer Klasse ein Interface machen? Java Basics - Anfänger-Themen 5
B String zu int machen Java Basics - Anfänger-Themen 23
M Programm lauffähig machen ohne Run Configurations Java Basics - Anfänger-Themen 5
M aus vielen backsalshs einen machen Java Basics - Anfänger-Themen 6
M Backslash aus mehreren einen machen? Java Basics - Anfänger-Themen 7
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
F Was soll dieses Programm genau machen ? Java Basics - Anfänger-Themen 9
O Will ein Jar-Archive machen mit FAT JAR - geht nicht ! Java Basics - Anfänger-Themen 2
J Wie java programm noch schneller machen? Java Basics - Anfänger-Themen 30
R Problem: Threads Synchronized machen Java Basics - Anfänger-Themen 5
TheKing Bild nur in Kreis sichtbar machen Java Basics - Anfänger-Themen 6
V JFrame erst sichtbar machen wenns geladen ist Java Basics - Anfänger-Themen 8
J Oracle XE bekannt machen Java Basics - Anfänger-Themen 8
K Farbe heller machen Java Basics - Anfänger-Themen 4
C OOP Klassen in der "Hauptklasse" bekannt machen Java Basics - Anfänger-Themen 4
Q Iteration wie machen Java Basics - Anfänger-Themen 5
T Applet zentrieren / Rand machen Java Basics - Anfänger-Themen 5
M Fenster unsichtbar machen Java Basics - Anfänger-Themen 9
J binaerbaum aus listen machen Java Basics - Anfänger-Themen 8
A snapshot machen Java Basics - Anfänger-Themen 4
C Wie Objekte am besten anklickbar machen ? Java Basics - Anfänger-Themen 9
J arraylist ausserhalb der main Methode zugänglich machen (Elemente adden und updaten) Java Basics - Anfänger-Themen 4
H Parameterobjekt in App anwendungsweit verfügbar machen Java Basics - Anfänger-Themen 6
H JTable editierbar machen Java Basics - Anfänger-Themen 2
N 2 Befehle zu einem machen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben