2017-04-22 120 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