1
我通過Java中的套接字發送圖像,並且當客戶機和服務器都在一臺計算機上時一切正常,但是當我通過LAN運行時,產生的圖像是黑色的。我用Robot類拍攝屏幕圖像,然後使用AffineTransform對其進行縮放。 客戶端代碼:Java - 通過套接字傳輸時可序列化的圖像爲黑色
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代碼:
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();
}
SerializableImage是一個非JDK類。它從何而來? –
爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –