2012-06-01 27 views
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(); 
     } 
+6

SerializableImage是一個非JDK類。它從何而來? –

+0

爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

相關問題