2017-04-22 9 views
1

私はサーバー、クライアント、およびメッセージのクラスを持っています。 Messageクラスは、サーバー名、クライアント名、BufferedImage、コマンドなどで構成されます。私がしたいのは、SerializedバイトフォームとしてServerからMessageへBufferedImageを保存し、MessageをClientに送信し、Clientクラスで受信した後でMessage内のBufferedImageを逆シリアル化することです。どのようにすればよいのか質問したいのは、私が見つけることができるのは、BufferedImageをServerからClientに直接送信することだけだったからです。Java BufferedImageのシリアル化

ありがとうございました。

+0

[何Androidに、Javaから(スイングと互換性のある)イメージをシリアル化するための最良の方法です?](HTTPの可能性のある重複: //stackoverflow.com/questions/9994129/what-is-the-best-way-to-serialize-an-image-compatible-with-swing-from-java-to) –

答えて

1

メッセージインスタンスをObjectOutputStreamに書き込むことができます。
すべてのフィールドがシリアル化されたクラスを定義し、 は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(); 
+1

ありがとうございました! – Ned

+0

あなたは歓迎です:) – davidxxx

関連する問題