2017-04-22 118 views
1

我有類,服務器,客戶端和消息。 Message類由服務器名稱,客戶端名稱,BufferedImage,命令等組成。我想要做的是將BufferedImage從Server存儲爲Message作爲序列化的字節形式,將Message發送給Client,並在Message類中接收到Message後,將消息中的BufferedImage反序列化。我想問一下它是如何完成的,因爲我能找到的就是直接從服務器發送BufferedImage到客戶端。Java BufferedImage序列化

非常感謝。

+0

可能的複製[什麼是序列化的圖像(與Swing兼容)從Java到Android的最好方法是什麼?(HTTP: //stackoverflow.com/questions/9994129/what-is-the-best-way-to-serialize-an-image-compatible-with-swing-from-java-to) –

回答

1

您可以在ObjectOutputStream中編寫消息實例。
只需定義Message類,並將所有字段序列化, 將BufferedImage存儲爲字節表示形式。

從服務器端,您可以通過這種方式在OutputStream中寫郵件:

OutputStream outputStreamServer = ...; 
byte[] bufferedImage = ... 
Message message = new Message(bufferedImage, name, ...); 
ObjectOutputStream ObjectOS = new ObjectOutputStream(outputStreamServer); 
ObjectOS.writeObject(message); 

這樣,從客戶端,您可以通過使用ObjectInputStream讀取服務器流,並獲得Message實例。
而當客戶願意,他可以反序列化的字節到BufferedImage:的

ObjectInputStream ObjectIS = new ObjectInputStream (inputStreamClient); 
Message message = (Message) ObjectIS.readObject(); 
... 
// where unserializeBufferedImage() is a custom method to do the unserialization 
BufferedImage image = message.unserializeBufferedImage(); 
+1

非常感謝! – Ned

+0

歡迎您:) – davidxxx