【问题标题】:Java BufferedImage SerializationJava BufferedImage 序列化
【发布时间】:2017-04-22 10:42:33
【问题描述】:
我有服务器、客户端和消息类。 Message 类由服务器名称、客户端名称、BufferedImage、命令等组成。我想做的是将一个 BufferedImage 从服务器存储到消息作为序列化字节形式,将消息发送到客户端,并在客户端类中接收到消息后反序列化消息中的 BufferedImage。我想问怎么做,因为我能找到的只是将 BufferedImage 直接从服务器发送到客户端。
非常感谢。
【问题讨论】:
标签:
java
serialization
bufferedimage
【解决方案1】:
您可以将消息实例写入ObjectOutputStream。
只需定义带有所有字段的 Message 类即可序列化和
以字节表示形式存储 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();