Screenshot in Java

Status
Nicht offen für weitere Antworten.

Panzer_57

Mitglied
Hallo,

ich möchte gerne einen Screenshot automatisch machen. Gibt es in Java eine Klasse mit der ich das kann?

Wenn nicht, kann ich vl auf ein Screenshot-Programm zugreifen und damit einen Screenshot machen?

Jetzt schon vielen Dank für die Hilfe,


mfg Panzer
 

PollerJava

Top Contributor
Code:
BufferedImage screenShotscreenShot = new Robot().createScreenCapture(new Rectangle((int)myPanel.getLocationOnScreen().getX(), (int)myPanel.getLocationOnScreen().getY(), myPanel.getWidth(), myPanel.getHeight()));  
ImageIO.write(screenShot, "png", new File(pfadAusgabe));
 

Panzer_57

Mitglied
Code:
Code:
BufferedImage screenShotscreenShot = new Robot().createScreenCapture(new Rectangle((int)myPanel.getLocationOnScreen().getX(), (int)myPanel.getLocationOnScreen().getY(), myPanel.getWidth(), myPanel.getHeight()));  
ImageIO.write(screenShot, "png", new File(pfadAusgabe));

Macht dein Code einen Screenshot vom ganzen Bildschirm oder vom aktiven Fenster? Ich brauche nur das Fenster.

Wie kann ich das als Applet schreiben? Ich habs versucht, aber da ich noch nie ein Applet geschrieben habe, hatte ich ein paar probleme...
 

The_S

Top Contributor
Dieser Code ist nur das aktuelle Panel.

Was für Probleme hast du denn dabei in deinem Applet? Fehlermeldung?
 

Panzer_57

Mitglied
Ja, Fehlermeldung.

Und zwar: Cannot find Symbol - Class BufferedImage

Ich hab aber alle Klassen aus dem Paket importiert.
 

Marco13

Top Contributor
In einem Applet wirst du erstmal keinen Robot verwenden können. (Und das ist auch gut so!!!). Du könntest evtl. die Permissions so setzen, dass du das darfst, aber ich bin nichtmal sicher, ob das überhaupt möglich ist. (Robot ist zu mächtig, als dass man ihn in einem Applet überhaupt verwenden können sollte. Evtl. kannst du mit sowas wie
meinApplet.paint(einBufferedImage.getGraphics());
das Applet in ein BufferedImage reinmalen lassen. (Um das abzuspeichern, brauchst du zwar auch Permissions, aber das geht auf jeden fall irgendwie)
 

Panzer_57

Mitglied
Ich versuchs jetzt mal in einer normalen Klasse.

Hier kommt aber die Fehlermeldung: cannot find Symbol - class myPanel
 

The_S

Top Contributor
@Marco

Voraussetzung ist natürlich, dass das Applet signiert ist

@Panzer

Ach komm, denk halt bitte ein bisschen mit!
 

The_S

Top Contributor
Nochmal der Aufruf ein bisschen mitzudenken. myPanel ist garantiert keine Klasse. Klassen schreibt man groß!
 

Panzer_57

Mitglied
Ok das hätte mir wirklich auffallen sollen... Sry

Er schreibt natürlich cannot find Symbol - variable myPanel
und my Panel ist das Fenster das ich als Image haben will, richtig?
 

Panzer_57

Mitglied
Ok nachdem ich alle Klassen importiert habe, usw. kommt eine neue, mir unbekannte Fehlermeldung.

unreported exception java.awtAWTException; must be caught or declared to be thrown

Was heißt das???
 

The_S

Top Contributor
Das du entweder deiner Methode die Möglichkeit gibst eine AWTException zu werfen, oder den entsprechenden Code in einen Try-Catch Block einbettest, der eine AWTException fängt.
 

The_S

Top Contributor
Naja, eine AWTException wird geworfen wenn das AWT einen Fehler verursacht hat bzw. im AWT ein Fehler aufgetreten ist.
 

Panzer_57

Mitglied
ok also schreibe ich:
Code:
try{...}
catch(ATWException){}

und was kommt da zwischen die klammern?
 

Marco13

Top Contributor
Komisch, dass in diesem Thread noch niemand auf "Java ist auch eine Insel" oder andere Grundlagenbücher verwiesen hat...
 

The_S

Top Contributor
der code, der den fehler verursachen könnte!?

[edit] @Marco heute is Freitag, da will ich mal nicht so sein ;)
 

Panzer_57

Mitglied
Sry mein Fehler.

Wenn ich das so schreibe: catch(AWTException)
bekomme ich die Fehlermeldung identifier excepted. Was für einen Identifier brauch ich?

Kostet Java ist auch eine Insel was?
 

The_S

Top Contributor
naja, du stellst einfach so eine Klasse in den Raum. Dem catch-Block wird aber ein Objekt übergeben, folglich brauchst du eine Klasse mitsamt Variablennamen.

Das Buch gibts gratis auf www.galileocomputing.de
 

Marco13

Top Contributor
Wir haben das in der Schule garnicht durchgenommen, und ich weiß es trotzdem (das war jetzt schon kein Wink mit dem Zaunpfahl mehr, sondern mit einem ganzen Zaun...)
Code:
try
{
    machWasBöses();
} 
catch (AWTException dasIstDasExceptionObjektDasVielleichtVonObenAngeflogenKommt)
{
    dasIstDasExceptionObjektDasVielleichtVonObenAngeflogenKommt.printStackTrace();
}
 

Panzer_57

Mitglied
danke

ich mach das noch nicht solange erst seit einem jahr, was wir eben in der schule gelernt haben und bin erst seit kurzem soweit, das sowas wirklich relevant ist.
 

Panzer_57

Mitglied
screenShot is already defined heißt die nächste fehlermeldung.

ich weiß das ich vl ein bisschen nerve, aber es ist das erste mal dass ich sowas anspruchsvolles programmiere und ich kenne die fehlermeldungen noch nicht
 

Panzer_57

Mitglied
Ich habs jetzt so weit, dass ich keine Fehlermeldung bekomme. Aber Screenshot macht er immer noch keinen.

Das ist mein Code:
Code:
public class Screen{
    public void printScreen(){
        Panel myPanel=new Panel();
        int i=1;
        BufferedImage screenShot=new BufferedImage(350, 288, 2);
        boolean test=false, test2=false;
        while(test){
            try{
                screenShot = new Robot().createScreenCapture(new Rectangle((int)myPanel.getX(), (int)myPanel.getY(), myPanel.getWidth(), myPanel.getHeight()));  
            }catch(AWTException e){
                e.printStackTrace();
                test=true;
            }
        }
        while(test2){
            try{
                ImageIO.write(screenShot, "jpg", new File("./Screenshots/Screenshot " + i));
            }catch(IOException f){
                f.printStackTrace();
                test2=true;
            }
        }
    }
}
 

The_S

Top Contributor
Äh, die Schleifen sind recht sinnfrei. Und da beide boolean von Anfang an auf false stehen, werden die Schleifen natürlich auch nie durchgelaufen!

Und warum verwendest du irgendwelche wild gewählten Zahlen bei der Typendefinition des BufferedImages? Da verwendet man z. B. BufferedImage.TYPE_INT_RGB, aber nicht "2" :roll: .
 

Panzer_57

Mitglied
Mit den Schleifen hattest du recht, danke. Ich weiß auch nicht mehr wozu ich die da reingeschrieben hab...

Ich habs einfach mal mit irgendeiner Zahl ausprobiert, weil wenn ich da reinschreib:
Code:
BufferedImage screenShot=new BufferedImage(350, 288, TYPE_INT_RGB);
fehlt die Variable TYPE_INT_RGB...


#edit:
Bitte nicht antworten, bin gleich nachdem ichs geschrieben hab selbst draufgekommen :oops:
blöd...
 

The_S

Top Contributor
Irgendeine Zahl reinschreiben ist sicher nie sinnvoll. Schau dir doch einfach mal die entsrpechende Klasse in dem API an! Und wenn du meinen hinweis nochmal liest, was du reinschreiben sollst, dann findest du deinen Fehler sicherlich auch schnell ;) ! Mal ganz davon abgesehen, dass du eigentlich überhaupt keine neue Instanz deines BufferedImages erstellen musst ...
 

Panzer_57

Mitglied
Ich habe bis jetzt den Code verwendet den jemand früher in diesem Thread gepostet hat. Jetzt habe ich mich allerdings entschieden es selbst zu schreiben und mit Hilfe der API bin ich bis jetzt soweit gekommen:
Code:
public class Screenshot{
    public void printScreen(){
        Rectangle rect=new Rectangle(int 500, int 200, int 350, int 288);
        Robot rob=new Robot();
        rob.createScreenCapture(rect);
    }
}

Ich bekomme die Fehlermeldung in der 3. Zeile: '.class' expected.
Was heißt das, was kann ich dagegen tun?

Außerdem wüsste ich gerne: Kann das so überhaupt funktionieren?
 

The_S

Top Contributor
äh, du solltest dich nochmal mit den Grundlagen der Java-Syntax beschaffen!

Code:
Rectangle rect=new Rectangle(int 500, int 200, int 350, int 288);

ist völliger Schwachsinn. Warum "int"?
 

Panzer_57

Mitglied
warum nicht int?

Auszug aus der API Constructor Summary:

Rectangle(int x, int y, int width, int height)
Constructs a new Rectangle whose top-left corner is specified as (x, y) and whose width and height are
specified by the arguments of the same name.

Was mache ich deiner Meinung nach falsch?


#edit:
OMG ich pack mich heute nicht!!!!
Hab wohl zu wenig geschlafen, sry...
Bin heut ned gut drauf, schon das zweite mal so ein dummer Fehler :oops:
 

Panzer_57

Mitglied
Mein Debugger zeigt jetzt keine Fehlermeldungen, aber Speichern tut das Programm das Bild immer noch nicht...

Code:
 try{
                ImageIO.write(img, "jpg", new File("././Screenshots"));
            }catch(IOException ioE){
 

The_S

Top Contributor
dein debugger zeigt keine Fehlermeldung? Wird denn ansonsten eine Exception geworfen? Speicher das testhalber einfach mal ins ausführungsverzeichnis ohne ././ ...
 

Panzer_57

Mitglied
Gut das hat funktioniert. :D
Aber er speichert es nur als Datei und nicht als jpg. Weiß jemand woran das liegen könnte?
 

The_S

Top Contributor
Er speichert es schon als JPG, du hast einfach vergessen die Endung (.jpg) mitzugeben, deshalb wird es von deinem Betriebssystem nicht als jpeg erkannt, ein jpeg ist es aber dennoch.

Die Dateiendung hat streng gesehen nichts mit dem Inhalt der Datei zu tun!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Java Screenshot Alt+druck Allgemeine Java-Themen 3
T Methoden Farbe auf Screenshot suchen Allgemeine Java-Themen 2
T Screenshot -Bereich auswählen Allgemeine Java-Themen 2
F Screenshot auf bestimmtes Teilbild untersuchen Allgemeine Java-Themen 3
U Screenshot erstellen und speichern Allgemeine Java-Themen 6
K Screenshot mit Maus Allgemeine Java-Themen 2
Z Desktop anzeigen + Screenshot klappt nicht Allgemeine Java-Themen 3
F Screenshot von gewissen Anwendungen nicht möglich Allgemeine Java-Themen 5
Developer_X ScreenShot erstellen Allgemeine Java-Themen 8
J Screenshot von Websites? Allgemeine Java-Themen 3
Steev Screenshot vom Bereich behind dem aktuellen Fenster machen Allgemeine Java-Themen 24
G Screenshot mittels robot ausführen Allgemeine Java-Themen 4
MQue Screenshot Allgemeine Java-Themen 4
T Screenshot ohne meinem Programm Allgemeine Java-Themen 5
theJavaMaschine Mitstreiter gesucht: Gemeinsam Java und Android Development lernen! Allgemeine Java-Themen 5
PARAS Karriereberatung benötigt: Wie kann ich ein Java Full Stack Entwickler werden? Allgemeine Java-Themen 7
P Java Access Bridge Allgemeine Java-Themen 5
W ICEpdf PDF-Dateien werden mit Java 21 nicht nicht mehr vollständig dargestellt Allgemeine Java-Themen 3
MiMa Grundsätzliche Frage zur Verwendung von Java Versionen?? Allgemeine Java-Themen 3
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 1
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20

Ähnliche Java Themen

Neue Themen


Oben