1
2 package org.freehep.graphicsio.raw;
3
4 import java.awt.image.RenderedImage;
5 import java.io.IOException;
6
7 import javax.imageio.IIOImage;
8 import javax.imageio.ImageTypeSpecifier;
9 import javax.imageio.ImageWriteParam;
10 import javax.imageio.ImageWriter;
11 import javax.imageio.metadata.IIOMetadata;
12 import javax.imageio.stream.ImageOutputStream;
13
14 import org.freehep.util.images.ImageUtilities;
15
16
17
18
19
20 public class RawImageWriter extends ImageWriter {
21
22 public RawImageWriter(RawImageWriterSpi originatingProvider) {
23 super(originatingProvider);
24 }
25
26 public void write(IIOMetadata streamMetadata, IIOImage image,
27 ImageWriteParam param) throws IOException {
28 if (image == null)
29 throw new IllegalArgumentException("image == null");
30
31 if (image.hasRaster())
32 throw new UnsupportedOperationException("Cannot write rasters");
33
34 Object output = getOutput();
35 if (output == null)
36 throw new IllegalStateException("output was not set");
37
38 if (param == null)
39 param = getDefaultWriteParam();
40
41 ImageOutputStream ios = (ImageOutputStream) output;
42 RenderedImage ri = image.getRenderedImage();
43
44 RawImageWriteParam rawParam = (RawImageWriteParam) param;
45 byte[] bytes = ImageUtilities.getBytes(ri, rawParam.getBackground(),
46 rawParam.getCode(), rawParam.getPad());
47 ios.write(bytes);
48 }
49
50 public IIOMetadata convertStreamMetadata(IIOMetadata inData,
51 ImageWriteParam param) {
52 return null;
53 }
54
55 public IIOMetadata convertImageMetadata(IIOMetadata inData,
56 ImageTypeSpecifier imageType, ImageWriteParam param) {
57 return null;
58 }
59
60 public IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier imageType,
61 ImageWriteParam param) {
62 return null;
63 }
64
65 public IIOMetadata getDefaultStreamMetadata(ImageWriteParam param) {
66 return null;
67 }
68
69 public ImageWriteParam getDefaultWriteParam() {
70 return new RawImageWriteParam(getLocale());
71 }
72 }