Class AnimatedGifEncoder

java.lang.Object
edu.wisc.ssec.mcidasv.util.AnimatedGifEncoder

public class AnimatedGifEncoder extends Object
Class AnimatedGifEncoder - Encodes a GIF file consisting of one or more frames.
 Example:
    AnimatedGifEncoder e = new AnimatedGifEncoder();
    e.start(outputFileName);
    e.setDelay(1000);   // 1 frame per sec
    e.addFrame(image1);
    e.addFrame(image2);
    e.finish();
 
No copyright asserted on the source code of this class. May be used for any purpose, however, refer to the Unisys LZW patent for restrictions on use of the associated LZWEncoder class. Please forward any corrections to questions at fmsware.com.
Version:
1.03 November 2003
Author:
Kevin Weiner, FM Software
  • Field Details

  • Constructor Details

  • Method Details

    • setDelay

      public void setDelay(int ms)
      Sets the delay time between each frame, or changes it for subsequent frames (applies to last frame added).
      Parameters:
      ms - int delay time in milliseconds
    • setDispose

      public void setDispose(int code)
      Sets the GIF frame disposal code for the last added frame and any subsequent frames. Default is 0 if no transparent color has been set, otherwise 2.
      Parameters:
      code - int disposal code.
    • setRepeat

      public void setRepeat(int iter)
      Sets the number of times the set of GIF frames should be played. Default is 1; 0 means play indefinitely. Must be invoked before the first image is added.
      Parameters:
      iter - int number of iterations.
    • setTransparent

      public void setTransparent(Color c)
      Sets the transparent color for the last added frame and any subsequent frames. Since all colors are subject to modification in the quantization process, the color in the final palette for each frame closest to the given color becomes the transparent color for that frame. May be set to null to indicate no transparent color.
      Parameters:
      c - Color to be treated as transparent on display.
    • setTransparent

      public void setTransparent(Color c, boolean exactMatch)
      Sets the transparent color for the last added frame and any subsequent frames. Since all colors are subject to modification in the quantization process, the color in the final palette for each frame closest to the given color becomes the transparent color for that frame. If exactMatch is set to true, transparent color index is search with exact match, and not looking for the closest one. May be set to null to indicate no transparent color.
      Parameters:
      c - Color to be treated as transparent on display.
    • setBackground

      public void setBackground(Color c)
      Sets the background color for the last added frame and any subsequent frames. Since all colors are subject to modification in the quantization process, the color in the final palette for each frame closest to the given color becomes the background color for that frame. May be set to null to indicate no background color which will default to black.
      Parameters:
      c - Color to be treated as background on display.
    • addFrame

      public boolean addFrame(BufferedImage im)
      Adds next GIF frame. The frame is not written immediately, but is actually deferred until the next frame is received so that timing data can be inserted. Invoking finish() flushes all frames. If setSize was not invoked, the size of the first image is used for all subsequent frames.
      Parameters:
      im - BufferedImage containing frame to write.
      Returns:
      true if successful.
    • finish

      public boolean finish()
      Flushes any pending data and closes output file. If writing to an OutputStream, the stream is not closed.
    • setFrameRate

      public void setFrameRate(float fps)
      Sets frame rate in frames per second. Equivalent to setDelay(1000/fps).
      Parameters:
      fps - float frame rate (frames per second)
    • setQuality

      public void setQuality(int quality)
      Sets quality of color quantization (conversion of images to the maximum 256 colors allowed by the GIF specification). Lower values (minimum = 1) produce better colors, but slow processing significantly. 10 is the default, and produces good color mapping at reasonable speeds. Values greater than 20 do not yield significant improvements in speed.
      Parameters:
      quality - int greater than 0.
    • setSize

      public void setSize(int w, int h)
      Sets the GIF frame size. The default size is the size of the first frame added if this method is not invoked.
      Parameters:
      w - int frame width.
      h - int frame width.
    • start

      public boolean start(OutputStream os)
      Initiates GIF file creation on the given stream. The stream is not closed automatically.
      Parameters:
      os - OutputStream on which GIF images are written.
      Returns:
      false if initial write failed.
    • start

      public boolean start(String file)
      Initiates writing of a GIF file with the specified name.
      Parameters:
      file - String containing output file name.
      Returns:
      false if open or initial write failed.
    • isStarted

      public boolean isStarted()
    • analyzePixels

      protected void analyzePixels()
      Analyzes image colors and creates color map.
    • findClosest

      protected int findClosest(Color c)
      Returns index of palette color closest to c
    • isColorUsed

      boolean isColorUsed(Color c)
    • findExact

      protected int findExact(Color c)
      Returns index of palette exactly matching to color c or -1 if there is no exact matching.
    • getImagePixels

      protected void getImagePixels()
      Extracts image pixels into byte array "pixels"
    • writeGraphicCtrlExt

      protected void writeGraphicCtrlExt() throws IOException
      Writes Graphic Control Extension
      Throws:
      IOException
    • writeImageDesc

      protected void writeImageDesc() throws IOException
      Writes Image Descriptor
      Throws:
      IOException
    • writeLSD

      protected void writeLSD() throws IOException
      Writes Logical Screen Descriptor
      Throws:
      IOException
    • writeNetscapeExt

      protected void writeNetscapeExt() throws IOException
      Writes Netscape application extension to define repeat count.
      Throws:
      IOException
    • writePalette

      protected void writePalette() throws IOException
      Writes color table
      Throws:
      IOException
    • writePixels

      protected void writePixels() throws IOException
      Encodes and writes pixel data
      Throws:
      IOException
    • writeShort

      protected void writeShort(int value) throws IOException
      Write 16-bit value to output stream, LSB first
      Throws:
      IOException
    • writeString

      protected void writeString(String s) throws IOException
      Writes string to output stream
      Throws:
      IOException