F
Funkys
Gast
Hi,
Ich versuche mich gerade an einem Programm, das den Bildschirm aufnimmt (durch Robot.createScreenCapture()) und dann durch einen ObjectOutputStream verschickt. Auf dem Server wird er durch einen ObjectInputStream empfangen und auf das JPanel gezeichnet.
Mein Problem: Das Bild wird nicht angezeigt, das JFrame (JPanel) bleibt leer(weiß).
Als Test habe ich nun beim Server wie beim Client eine System.out.println() Anweisung hinzugefügt:
Client: System.out.println("Object gesendet: " + image.getImage());
Server: System.out.println("Object empfangen: " + image.getImage());
Dadurch habe ich bemerkt, dass es nicht das gleiche Bild ist.
Beim Client kommt das hier raus:
Object gesendet: BufferedImage@863399: type = 1 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0 IntegerInterleavedRaster: width = 1680 height = 1050 #Bands = 3 xOff = 0 yOff = 0 dataOffset[0] 0
beim Server jedoch nur noch: Object empfangen: sun.awt.image.ToolkitImage@119cca 4
Nun meine Frage: Woran liegt das und wie kann man es so machen, dass es geht??
MFG
PS: Hier der Quellcode:
Client:
Server:
Ich versuche mich gerade an einem Programm, das den Bildschirm aufnimmt (durch Robot.createScreenCapture()) und dann durch einen ObjectOutputStream verschickt. Auf dem Server wird er durch einen ObjectInputStream empfangen und auf das JPanel gezeichnet.
Mein Problem: Das Bild wird nicht angezeigt, das JFrame (JPanel) bleibt leer(weiß).
Als Test habe ich nun beim Server wie beim Client eine System.out.println() Anweisung hinzugefügt:
Client: System.out.println("Object gesendet: " + image.getImage());
Server: System.out.println("Object empfangen: " + image.getImage());
Dadurch habe ich bemerkt, dass es nicht das gleiche Bild ist.
Beim Client kommt das hier raus:
Object gesendet: BufferedImage@863399: type = 1 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0 IntegerInterleavedRaster: width = 1680 height = 1050 #Bands = 3 xOff = 0 yOff = 0 dataOffset[0] 0
beim Server jedoch nur noch: Object empfangen: sun.awt.image.ToolkitImage@119cca 4
Nun meine Frage: Woran liegt das und wie kann man es so machen, dass es geht??
MFG
PS: Hier der Quellcode:
Client:
Java:
package de.kuehne.writeimage;
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
public class Client {
public static void main(String args[]) throws AWTException, IOException
{
new Client().los();
}
public void los() throws AWTException, IOException
{
Robot robot = new Robot();
Socket sock;
sock = new Socket("localhost", 5000);
Rectangle rect = new Rectangle();
Dimension dim = Toolkit.getDefaultToolkit().getSc reenSize();
rect.x = 0;
rect.y = 0;
rect.width = dim.width;
rect.height = dim.height;
ObjectOutputStream ob = new ObjectOutputStream(sock.getOutput Stream());
while (!Thread.interrupted())
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
Image images = robot.createScreenCapture(rect);
ImageIcon image = new ImageIcon(images);
ob.writeObject(images);
System.out.println("Obj ect gesendet: " + image.getImage());
}
}
}
Server:
Java:
package de.kuehne.writeimage;
import java.awt.Graphics;
import java.awt.Image;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Server {
public static void main(String args[]) throws IOException
{
new Server().los();
}
public void los() throws IOException
{
ServerSocket sock = new ServerSocket(5000);
Socket socket = sock.accept();
ObjectInputStream in = new ObjectInputStream(socket.getInput Stream());
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setVisible(true);
frame.setDefaultCloseOperatio n(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.add(panel);
Graphics g = panel.getGraphics();
while (!Thread.interrupted())
{
try
{
ImageIcon image = (ImageIcon) in.readObject();
System.out.println("Ob ject empfangen: " + image.getImage());
Image images = image.getImage();
g.drawImage(images, 0, 0, null);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
}
}