2017-04-22 4 views
1

클래스에는 서버, 클라이언트 및 메시지가 있습니다. Message 클래스는 서버 이름, 클라이언트 이름, BufferedImage, 명령 등으로 구성됩니다. 내가 뭘하고 싶은건 서버에서 Message로 직렬화 된 바이트 형식으로 BufferedImage를 저장하고, Message를 Client로 보내고, Client 클래스에서 Message를받은 후 Message 내에 BufferedImage를 deserialize하는 것입니다. 어떻게 할 수 있는지 물어보고 싶습니다. 왜냐하면 내가 찾을 수있는 것은 BufferedImage를 서버에서 클라이언트로 직접 보내는 것이기 때문입니다.Java BufferedImage Serialization

대단히 감사합니다.

+0

가능한 중복을 [무엇 안드로이드 자바에서 (스윙과 호환) 이미지를 직렬화하는 가장 좋은 방법입니다?] (HTTP가 : //stackoverflow.com/questions/9994129/what-is-the-best-way-to-serialize-an-image-compatible-with-swing-from-java-to) –

답변

1

메시지 인스턴스를 ObjectOutputStream에 쓸 수 있습니다.
serialize 할 모든 필드가있는 Message 클래스를 정의하고 은 BufferedImage을 바이트 표현으로 저장합니다. 이 방법으로의 OutputStream에 메시지를 쓸 수있는 서버 측에서

: 클라이언트 측에서, 이런 식으로

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

, 당신은 ObjectInputStream을 사용하여 서버의 스트림을 읽고 얻을 수 Message 인스턴스.
그리고 클라이언트가 원하는 때, 그는 BufferedImage에 바이트를 unserialize 수의

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