Java Screen Blur Effekt

Status
Nicht offen für weitere Antworten.

radiac

Bekanntes Mitglied
Und wieder ich :D.


Okay, jetzt hab ich folgendes Problem...

Ich habe jetzt einen Screenshot von meinem Programm gemacht. Jetzt wollte ich den verschwimmen lassen den Screenshot und auf meinem Aktuellen Bildschirm anzeigen lassen...
Das einzige was ich bekomme ist... SCHWARZ!!!! :lol:

Das ist jetzt etwas spezielle Grafikprogrammierung hier:

Hier mache ich meinen ScreenShot in einer init();
Java:
...
 // Screenshot
        try {
        rob = new Robot();
	Rectangle captureSize = new Rectangle(0, 0, this.WIDTH, this.HEIGHT);
        ScreenShot = rob.createScreenCapture(captureSize);
    }
    catch(AWTException e) {
    	System.err.println("GEHT NICHT!");
    }    
...

Hier könnte evt. das Problem sein, das er hier schon nichts vor die "Linse" bekommt und daher schwarz.

Und dann zu meiner Blur/ Sharp Methode:

Java:
public void drawBlur(Graphics g) {
        if (!blurEffect) return;

        Graphics2D g2d=(Graphics2D)g;

        BufferedImage biSrc = ScreenShot;
        ScreenShot = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
        biSrc.createGraphics().drawImage(ScreenShot, 0, 0, this);
        
        BufferedImage biDest = ScreenShot;
        ScreenShot = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
        biDest.createGraphics().drawImage(ScreenShot, 0, 0, this);

        // Matrix-feslegung
        float data[] = {1.0f, 0.0f, -1.0f,
                        1.0f, 0.0f, -1.0f,
                        1.0f, 0.0f, -1.0f};
        Kernel kernel = new Kernel(3,3,data);
        
        // Anwenden der Matrix auf Screenshot
        ConvolveOp convolve = new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null);
        convolve.filter(biSrc, biDest);
        
        g2d.drawImage(biDest,0,0,this.getWidth(),this.getHeight(),null); // small zum test
        }

[/JavA]
Am Ende wird drawBlur(g) in der PaintMethode aufgerufen.

Was mach ich hier falsch???
Würde mich auf eine gute Hilfestellung freuen :D


Viele Grüße Radiac
 

javimka

Top Contributor
Ich glaube, du machst da ein kleines Chaos mit Screenshot und biSrc. Du willst doch den Screenshot auf biSrc kopieren oder? Das müsste dann etwa so gehen:
Java:
        BufferedImage biSrc = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
        biSrc.createGraphics().drawImage(ScreenShot, 0, 0, this);
Für biDest analog.

Müsste die Summe der Einträge des Kernel nicht optimalerweise 1 geben? Aber vielleicht willst du es ja auch anders.

Um herauszufinden, ob das Bild vielleicht schon vorher schwarz war, könntest du es ja einmal ohne die Filter zeichnen lassen. Und this.WIDTH und this.HEIGHT werden sicher grösser als 0 sein oder?
 

radiac

Bekanntes Mitglied
Huhu.

Jo Stimmt. Da hab ich nach und nach bei meinen Versuchen wirr warr eingebaut :p.

Richtig sollte es ja jetzt so sein, oder?

Java:
 public void drawBlur(Graphics g) {
        if (!blurEffect) return;

        Graphics2D g2d=(Graphics2D)g;

        BufferedImage biSrc = new BufferedImage(200,170,BufferedImage.TYPE_INT_RGB);
        biSrc.createGraphics().drawImage(ScreenShot, 0, 0, this);
        
        BufferedImage biDest = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
        biDest.createGraphics().drawImage(ScreenShot, 0, 0, this);

        // Matrix-feslegung
        float data[] = {1.0f, 0.0f, -1.0f,
                        1.0f, 0.0f, -1.0f,
                        1.0f, 0.0f, -1.0f};
        Kernel kernel = new Kernel(3,3,data);
        
        // Anwenden der Matrix auf Screenshot
        ConvolveOp convolve = new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null);
        convolve.filter(biSrc, biDest);
        
        g2d.drawImage(biDest,0,0,this.getWidth(),this.getHeight(),null); // small zum test
        }

Leider kommt hier trotzdem ein Black Screen. Hab auch mal anstatt biDest biSrc also das original Bild (Screenshot) ausgeben lassen. der gleiche Effekt.
Dann scheint es wohl am Screenshot zu liegen noch...
 

radiac

Bekanntes Mitglied
-Update-

scheint wohl am Screenshot Part zu liegen.
Hab mal ein willkürliches Bild geladen. Da funktioniert es jetzt.
Doch bei dem Screenshot hab ich so meine Bedenken das der überhaupt funktioniert :p.
 

Steev

Bekanntes Mitglied
Q: Wieso ist das Bild schwarz???

A: Weil du den Screenshot nicht verwendest!

[Java]BufferedImage biSrc = ScreenShot;
ScreenShot = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
biSrc.createGraphics().drawImage(ScreenShot, 0, 0, this);

BufferedImage biDest = ScreenShot;
ScreenShot = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);
biDest.createGraphics().drawImage(ScreenShot, 0, 0, this);[/Java]

In obigem Code wird alles was vorher in ScreenShot drinsteht mit einem neuen Image-Objekt überschrieben...

[Java] float data[] = {1.0f, 0.0f, -1.0f,
1.0f, 0.0f, -1.0f,
1.0f, 0.0f, -1.0f};
[/Java]

Sollte ein Blur-Matrix nicht vieleicht doch eher wie folgt aussehen? Mit dieser Blur-Matrix überlagerst du doch nur die horizontalen Pixel...

Sollte das ganze nicht vieleicht in etwas so

[Java] float data[] = {0.0f, 1.0f, 0.0f,
1.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f};
[/Java]

oder so

[Java] float data[] = {1.0f, 1.0f, 1.0f,
1.0f, 0.0f, 1.0f,
1.0f, 1.0f, 1.0f};
[/Java]

oder so

[Java] float[] blurKernel = {
1/9f, 1/9f, 1/9f,
1/9f, 1/9f, 1/9f,
1/9f, 1/9f, 1/9f
};[/Java]

aussehen?

Hier vieleicht noch ein interessanter Link dazu:
Images in Java 2D
 

radiac

Bekanntes Mitglied
Hi Steev,


also hab das Beispiel mal übernommen, das mit der Burg.
Aber auch hier nur ein freeze Bildschirm.

Ich such mal weiter... das muss doch gehen irgendwie :p.

Danke für eure Helps!!! :toll:
 

radiac

Bekanntes Mitglied
Hmm, habe festgestellt, das irgendwie der Screenshot nicht funktioniert...

folgendes habe ich zum test mal eingegeben:

Java:
g.drawImage(Screen, 300, 300, this);

Screen wird hier erstellt und ausgegeben...

Java:
// Screenshot
        try {
        rob = new Robot();
	Rectangle captureSize = new Rectangle(0, 0, this.WIDTH, this.HEIGHT);
        Screen = rob.createScreenCapture(captureSize);
    }
    catch(AWTException e) {
    	System.err.println("GEHT NICHT!");
    }

Gibt es eine andere Möglichkeit einen Screenshot zu machen, oder ist diese falsch???
 

radiac

Bekanntes Mitglied
Huhu Steev,


hab auch mal eine Methode gebaut, die mein Screen shooted :p.

Und siehe da, ein schwarzes Bild...

Java:
Robot robot = new Robot();

	BufferedImage screenShot = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
	ImageIO.write(screenShot, "PNG", new File("screenShot.PNG"));

Liegt definitiv am Panel oder?

-EDIT -

Leicht überschnitten. Ja, sowas ähnliches hab ich auch gebaut, nur mit ausgabe Datei.
Und leider black... :(.
Hab auch einen FSEM muss man bedenken...

Bild 3 kb Groß...
 
Zuletzt bearbeitet:

radiac

Bekanntes Mitglied
Gibt es denn keine alternative einen ScreenShot zu machen? Ohne Robot...? Über Paint oder so?
 

radiac

Bekanntes Mitglied
Okay, habs... :p

Ist natürlich doof wenn man so doof ist wie ich, und den Screenshot machen lässt, wenn gerade das Programm startet :lol:.

Ich hab es jetzt Zeitgesteuert gemacht und es klappt :bae:.
Nur noch der Blur muss jetzt gehen :D.

Ich melde mich...
 

radiac

Bekanntes Mitglied
Hmm, okay.. das Blur geht noch nicht so wirklich :).

Java:
public void drawBlur() {
        if (!blurEffect) return;
  
        filteredImage = new BufferedImage(screenShot.getWidth(null),
        screenShot.getHeight(null),
        BufferedImage.TYPE_BYTE_GRAY);

        size = new Dimension();
        size.width = screenShot.getWidth(null);
        size.height = screenShot.getHeight(null);
        setPreferredSize(size);

        Graphics g = filteredImage.getGraphics();
        g.drawImage(screenShot, 0, 0, null);

        float[] blurKernel = {
        1/9f, 1/9f, 1/9f,
        1/9f, 1/9f, 1/9f,
        1/9f, 1/9f, 1/9f
        };

        BufferedImageOp blur = new ConvolveOp(new Kernel(3, 3, blurKernel));
        screenShot = blur.filter(screenShot, null);
        g.dispose();

        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(screenShot, null, 3, 3);
    }

Hab ich da wieder Mist gebaut??? Jedenfalls gehen hier meine FPS in die Knie :p

Die Methode wird in Paint aufgerufen.
 

radiac

Bekanntes Mitglied
Okay, jetzt klappt es endlich!!!!! :D


Lösung:

Java:
public void ScreenShot() throws IOException, AWTException{

	    Robot robot = new Robot();

	    screenShot = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));

        filteredImage = new BufferedImage(screenShot.getWidth(null), screenShot.getHeight(null), BufferedImage.TYPE_BYTE_GRAY);

        Graphics g = filteredImage.getGraphics();
        g.drawImage(screenShot, 0, 0, null);

        float[] blurKernel = {
        1/9f, 1/9f, 1/9f,
        1/9f, 1/9f, 1/9f,
        1/9f, 1/9f, 1/9f
        };

        BufferedImageOp blur = new ConvolveOp(new Kernel(3, 3, blurKernel));
        screenShot = blur.filter(screenShot, null);
        g.dispose();
    }

...

public void drawBlur(Graphics g) {
        if (!blurEffect) return;

         g.drawImage(screenShot, 0, 0, null);

    }

Danke für eure Hilfe!!! :toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
xFearofdarkness Feinde überlappen sich in Java Spiel Spiele- und Multimedia-Programmierung 3
A Minecraft Java Buch fehlermeldung Spiele- und Multimedia-Programmierung 67
yakazuqi Minecraft java.lang.Error: Watchdog Spiele- und Multimedia-Programmierung 3
L Fehler bei "Nochmal Spielen" (Java) Spiele- und Multimedia-Programmierung 1
N Minecraft Java Error Spiele- und Multimedia-Programmierung 6
M "Java Datei" Cannot be resolved to a variable Spiele- und Multimedia-Programmierung 2
1Spinne Minecraft Fabric Modding Java Error Spiele- und Multimedia-Programmierung 2
Joris Minecraft Minecraft Java Server Spiele- und Multimedia-Programmierung 6
Shanic Minecraft Minecraft Forge Server "Falsche Java Version" Spiele- und Multimedia-Programmierung 6
O Browser-basiertes online Pokerspiel mit Java Spiele- und Multimedia-Programmierung 1
M Spiel Mühle-Programmierung Java Spiele- und Multimedia-Programmierung 9
G VST-Plugins in Java verwenden Spiele- und Multimedia-Programmierung 0
P Audio Visualizer mit OpenGL in Java? Spiele- und Multimedia-Programmierung 4
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
D Minecraft [Minecraft] Java Start Fehler (Core-Dump) Spiele- und Multimedia-Programmierung 1
T Welche packages aus der java api doku ist hilfreich zur Android Spieleprogrammierung Spiele- und Multimedia-Programmierung 2
A Programmieren eines Memorys mit Java (in Eclipse) Spiele- und Multimedia-Programmierung 5
L Sound in Java Spiel Spiele- und Multimedia-Programmierung 5
C Java findet FluidSynth nicht Spiele- und Multimedia-Programmierung 2
I Java Andere Fenster in Borderless-Mode setzen Spiele- und Multimedia-Programmierung 16
leon_krys Java-Bußgeldrechner Spiele- und Multimedia-Programmierung 5
G [Java/KryoNet/LibGDX] Mutliplayer Packet Frage Spiele- und Multimedia-Programmierung 2
P Website mit Java Backend? Spiele- und Multimedia-Programmierung 1
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
J Fertigungstechnik.. PLS HALP.. Quellcode vom Text in java-Klasse speichern Spiele- und Multimedia-Programmierung 2
E Kalah Java Implementation Spiele- und Multimedia-Programmierung 1
G [Java] Vereinfachung von Boolean Abfragen Spiele- und Multimedia-Programmierung 3
G [LibGDX/Java] ArrayList Object Speicher Spiele- und Multimedia-Programmierung 3
T Java 3D Spiele- und Multimedia-Programmierung 2
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
J Java Buttons Spiele- und Multimedia-Programmierung 6
T Java Kalender Spiele- und Multimedia-Programmierung 5
Ice4P4rty Java Optische Oberfläche Spiele- und Multimedia-Programmierung 2
MABY Eine mp3 Datei in Java abspielen Spiele- und Multimedia-Programmierung 14
D Java Bomberman Probleme java.lang.NullPointerException Spiele- und Multimedia-Programmierung 1
N Spiele-Menü in Java Spiele- und Multimedia-Programmierung 9
J HDMI Ausgänge mit Java programmieren? Spiele- und Multimedia-Programmierung 18
H Yu-Gi-Oh! Mit Java was tun? Spiele- und Multimedia-Programmierung 6
G Component System Java 2D Game LibGDX Spiele- und Multimedia-Programmierung 6
S Pong java.lang.StackOverflowError Spiele- und Multimedia-Programmierung 3
C Java aus Klasse rausgehen Spiele- und Multimedia-Programmierung 2
MaxG. Java Internet Radio Spiele- und Multimedia-Programmierung 6
G [Java Server] Allgemeine Frage zum Thema Networking in Videospielen Spiele- und Multimedia-Programmierung 15
P java.lang.NoClassDefFoundError: in Greenfoot Spiele- und Multimedia-Programmierung 0
G Java Achsen invertieren Spiele- und Multimedia-Programmierung 2
G Java 2D Spiel mit LWJGL verbinden Spiele- und Multimedia-Programmierung 1
$ Einstieg in Java Game Development Spiele- und Multimedia-Programmierung 11
BraunBerry Java Game Pixel "einfärben" Spiele- und Multimedia-Programmierung 6
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
BraunBerry Java Game Waypoint System Spiele- und Multimedia-Programmierung 3
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
D Java sound pulseaudio Spiele- und Multimedia-Programmierung 0
David Schwarzbeck Java 3 dimensionale Kollisions Abfrage Spiele- und Multimedia-Programmierung 2
M Gesellschaftsspiel Mühle in Java programmieren Spiele- und Multimedia-Programmierung 3
beatles Java Minesweeper - OS X und Win7 Unterschied Spiele- und Multimedia-Programmierung 2
D Minecraft Java JDK installiert - Minecraft läuft nichtmehr in 64 Bit Spiele- und Multimedia-Programmierung 2
E TMX - Dateien in Java laden Spiele- und Multimedia-Programmierung 1
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
windl MoviePlayer in Java Spiele- und Multimedia-Programmierung 0
S 2D-Render Probleme LWJGL 2 (Java) Spiele- und Multimedia-Programmierung 1
F Klausurersatz: Ein Java-Programm erstellen und dieses präsentieren. Spiele- und Multimedia-Programmierung 2
E Java Jump and Run Map zu groß Spiele- und Multimedia-Programmierung 14
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
J programm mit java-plugin Spiele- und Multimedia-Programmierung 2
D Java Webgame, welche Frameworks oder Techs sind von Nöten? Spiele- und Multimedia-Programmierung 5
P Java 2D Bug? Spiele- und Multimedia-Programmierung 8
T Problem mit Eclipse (java)-(minecraft) Spiele- und Multimedia-Programmierung 3
R Java App sendet Midi Daten über Flash Spiele- und Multimedia-Programmierung 3
O Java Zeile aus Textdatei zufällig ausgeben Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Spiele- und Multimedia-Programmierung 1
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
J Java Kollisionsabfrage Spiele- und Multimedia-Programmierung 21
Flo. android java tastatureingaben abfangen. Spiele- und Multimedia-Programmierung 1
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
P Java Grafiken mit Rechnungen verknüpfen Spiele- und Multimedia-Programmierung 4
U Minecraft Mit Java auf Minecraft Server anmelden Spiele- und Multimedia-Programmierung 11
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
C virtueller stereomix (java sound API) Spiele- und Multimedia-Programmierung 0
S Engine2D - Java 2D Engine Spiele- und Multimedia-Programmierung 20
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
C Java Kollisionserkennung Spiele- und Multimedia-Programmierung 4
U Blender in Java Spiele- und Multimedia-Programmierung 8
J Java Fussballspiel Player-KI in der Bewegungsphase Spiele- und Multimedia-Programmierung 4
K Java 15/Slide/Boss Puzzle Spiele- und Multimedia-Programmierung 2
T Java 3D - Step oder IGES Spiele- und Multimedia-Programmierung 1
H 3D Spiele mit Java - Diskussion Spiele- und Multimedia-Programmierung 35
X Kleines Problem mit Java Reflections und einem eigenen Eventhandler Spiele- und Multimedia-Programmierung 1
M Bilder in Java Spiele- und Multimedia-Programmierung 7
A Minecraft Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Spiele- und Multimedia-Programmierung 7
N Minecraft java lernen minecraft Spiele- und Multimedia-Programmierung 20
J 2d Ansicht mit Java 3d Spiele- und Multimedia-Programmierung 13
F Abbyy finereader aus java starten, Ergebnis zurück? Spiele- und Multimedia-Programmierung 2
P Zeichenübungen mit Java Spiele- und Multimedia-Programmierung 4
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
I Minecraft Java programmierungs fehler "MineCraft" Spiele- und Multimedia-Programmierung 6
J Java 2D Sicht Spiele- und Multimedia-Programmierung 13
H wma Datei abspielen: java.io.IOException: Resetting to invalid mark Spiele- und Multimedia-Programmierung 11
M Würdet ihr sagen Java Applets eignen sich gut Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen


Oben