1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.example.imagine.step1.codec;
21
22 import org.apache.mina.filter.codec.ProtocolEncoderOutput;
23 import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
24 import org.apache.mina.core.buffer.IoBuffer;
25 import org.apache.mina.core.session.IoSession;
26 import org.apache.mina.example.imagine.step1.ImageResponse;
27
28 import javax.imageio.ImageIO;
29 import java.awt.image.BufferedImage;
30 import java.io.ByteArrayOutputStream;
31 import java.io.IOException;
32
33
34
35
36
37
38 public class ImageResponseEncoder extends ProtocolEncoderAdapter {
39
40 public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
41 ImageResponse imageResponse = (ImageResponse) message;
42 byte[] bytes1 = getBytes(imageResponse.getImage1());
43 byte[] bytes2 = getBytes(imageResponse.getImage2());
44 int capacity = bytes1.length + bytes2.length + 8;
45 IoBuffer buffer = IoBuffer.allocate(capacity, false);
46 buffer.putInt(bytes1.length);
47 buffer.put(bytes1);
48 buffer.putInt(bytes2.length);
49 buffer.put(bytes2);
50 buffer.flip();
51 out.write(buffer);
52 }
53
54 private byte[] getBytes(BufferedImage image) throws IOException {
55 ByteArrayOutputStream baos = new ByteArrayOutputStream();
56 ImageIO.write(image, "PNG", baos);
57 return baos.toByteArray();
58 }
59 }