2016-03-31 38 views
2

我想從套接字服務器(Java)發送圖像到套接字客戶端(Python),但客戶端中接收到的圖像的大小不正確並且未打開。我不知道我做錯了什麼。有什麼建議麼?將圖像從套接字服務器(java)發送到套接字客戶端(python)

服務器(JAVA):

... 
BufferedImage image = ImageIO.read (new File("c:\\tmp\\File.png")); 
ImageIO.write(image, "png", connectionSocket.getOutputStream()); 
... 

客戶端(Python)的:

try: 
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    client_socket.connect(host , port) 
    data = client_socket.recv(1024) 
    fp = open (path, "wb") 
    while data: 
     data = client_socket.recv(1024) 
     if data: 
      if not data: break 
      fp.write (data) 
      fp.flush() 
     fp.close() 
     client_socket.close() 
except: 
    print "could not connect to %s:%s " %(host, port 
+0

使用base64編碼到transfert – Tokazio

+0

謝謝能否請您進一步解釋 – ezzitt

+0

你必須知道你會送多少數據,以確保接收所有的他們。在java中,在轉移之前獲取圖像大小(例如,稱爲's'),首先將大小''發送給python客戶端,然後讀取's'下一個數據。否則,您可以在獲取它時使用結束分隔符來傳輸和讀取數據。 – Tokazio

回答

1

轉換圖像到Base64字符串(JAVA),然後transfert字符串並取回的圖像數據(蟒蛇)。

在java中,從BASE64字符串獲取圖片:

public static Image image(String base64Img) { 
byte[] b = DatatypeConverter.parseBase64Binary(base64Img); 
ByteArrayInputStream s = new ByteArrayInputStream(b); 
return new Image(s); 
} 
相關問題