我通过 Java 中的套接字发送图像,当客户端和服务器都在一台计算机上时,一切都很好,但是当我通过 LAN 运行它时,生成的图像是黑色的。我使用 Robot 类拍摄屏幕图像,然后使用 AffineTransform 将其缩小。 客户端代码:
BufferedImage s = null;
socket = new Socket("AJ-PC", 4444);
out = new ObjectOutputStream(socket.getOutputStream());
Robot r = new Robot();
while(true) {
s = r.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
double scale = 0.75;
int w = (int) (s.getWidth() * scale);
int h = (int) (s.getHeight() * scale);
BufferedImage outImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
AffineTransform trans = new AffineTransform();
trans.scale(scale, scale);
Graphics2D g = outImage.createGraphics();
g.drawImage(s, trans, null);
g.dispose();
Thread.sleep(400);
out.writeObject(new SerializableImage(outImage));
}
服务器代码:
server = new ServerSocket(4444);
socket = server.accept();
System.out.println(socket);
in = new ObjectInputStream(socket.getInputStream());
while(running) {
bi = (SerializableImage) in.readObject();
b = true;
System.out.println("new");
panel.repaint();
}
最佳答案
我正在使用 http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx 中的 PsExec 实用程序,这似乎就是问题所在。当我不使用它远程执行时,它运行良好。
关于Java - 通过套接字传输时可序列化图像为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858563/