Java 缓冲图像序列化

Java BufferedImage Serialization

我有 class 的服务器、客户端和消息。 Message class 由服务器名称、客户端名称、BufferedImage、命令等组成。我想做的是将一个 BufferedImage 作为序列化字节形式从服务器存储到 Message,将 Message 发送到 Client,并在 Client class 中接收到消息后在 Message 中反序列化 BufferedImage。我想问一下怎么实现,因为我能找到的就是将BufferedImage直接从Server发送到Client。

非常感谢。

您可以将消息实例写入 ObjectOutputStream
只需定义 Message class 与所有字段序列化和 将 BufferedImage 存储在字节表示中。

在服务器端,您可以通过这种方式在输出流中写入消息:

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();