View Javadoc

1   // Copyright 2003, FreeHEP
2   package org.freehep.graphicsio.gif;
3   
4   import java.awt.image.BufferedImage;
5   import java.awt.image.RenderedImage;
6   import java.io.IOException;
7   
8   import javax.imageio.IIOImage;
9   import javax.imageio.ImageTypeSpecifier;
10  import javax.imageio.ImageWriteParam;
11  import javax.imageio.ImageWriter;
12  import javax.imageio.metadata.IIOMetadata;
13  import javax.imageio.stream.ImageOutputStream;
14  
15  /**
16   * 
17   * @version $Id: GIFImageWriter.java 8584 2006-08-10 23:06:37Z duns $
18   */
19  public class GIFImageWriter extends ImageWriter {
20  
21      public GIFImageWriter(GIFImageWriterSpi originatingProvider) {
22          super(originatingProvider);
23      }
24  
25      public void write(IIOMetadata streamMetadata, IIOImage image,
26              ImageWriteParam param) throws IOException {
27          if (image == null)
28              throw new IllegalArgumentException("image == null");
29  
30          if (image.hasRaster())
31              throw new UnsupportedOperationException("Cannot write rasters");
32  
33          Object output = getOutput();
34          if (output == null)
35              throw new IllegalStateException("output was not set");
36  
37          if (param == null)
38              param = getDefaultWriteParam();
39  
40          ImageOutputStream ios = (ImageOutputStream) output;
41          RenderedImage ri = image.getRenderedImage();
42  
43          if (ri instanceof BufferedImage) {
44              BufferedImage bi = (BufferedImage) ri;
45              boolean interlaced = param.getProgressiveMode() != ImageWriteParam.MODE_DISABLED;
46              GIFEncoder encoder = new GIFEncoder(bi, ios, interlaced);
47              encoder.encode();
48          } else {
49              throw new IOException("Image not of type BufferedImage");
50          }
51      }
52  
53      public IIOMetadata convertStreamMetadata(IIOMetadata inData,
54              ImageWriteParam param) {
55          return null;
56      }
57  
58      public IIOMetadata convertImageMetadata(IIOMetadata inData,
59              ImageTypeSpecifier imageType, ImageWriteParam param) {
60          return null;
61      }
62  
63      public IIOMetadata getDefaultImageMetadata(ImageTypeSpecifier imageType,
64              ImageWriteParam param) {
65          return null;
66      }
67  
68      public IIOMetadata getDefaultStreamMetadata(ImageWriteParam param) {
69          return null;
70      }
71  
72      public ImageWriteParam getDefaultWriteParam() {
73          return new GIFImageWriteParam(getLocale());
74      }
75  }