# Class GIFEncoder

    java.lang.Object
       |
       +----GIFEncoder

public class GIFEncoder
extends Object

GIFEncoder is a class which takes an image and saves it to a stream using the GIF file format (Graphics Interchange Format). A GIFEncoder is constructed with either an AWT Image (which must be fully loaded) or a set of RGB arrays. The image can be written out with a call to `Write`.

Three caveats:

- GIFEncoder will convert the image to indexed color upon construction. This will take some time, depending on the size of the image. Also, actually writing the image out (Write) will take time.

- The image cannot have more than 256 colors, since GIF is an 8 bit format. For a 24 bit to 8 bit quantization algorithm, see Graphics Gems II III.2 by Xialoin Wu. Or check out his C source.

- Since the image must be completely loaded into memory, GIFEncoder may have problems with large images. Attempting to encode an image which will not fit into memory will probably result in the following exception:

  `java.awt.AWTException: Grabber returned false: 192`

GIFEncoder is based upon gifsave.c, which was written and released by:

Sverre H. Huseby
Bjoelsengt. 17
N-0468 Oslo
Norway

Phone: +47 2 230539
sverrehu@ifi.uio.no

Version:
  0.90 21 Apr 1996
Author:
  Adam Doppelt

##

GIFEncoder(byte[][], byte[][], byte[][])
  Construct a GIFEncoder.
GIFEncoder(Image)
  Construct a GIFEncoder.

##

Write(OutputStream)
  Writes the image out to a stream in the GIF file format.

##

GIFEncoder

      public GIFEncoder(Image image) throws AWTException

  Construct a GIFEncoder. The constructor will convert the image to an indexed color array. This may take some time.

  Parameters:
    image - The image to encode. The image must be completely loaded.
  Throws: AWTException
    Will be thrown if the pixel grab fails. This can happen if Java runs out of memory. It may also indicate that the image contains more than 256 colors.

GIFEncoder

      public GIFEncoder(byte r[][],
                        byte g[][],
                        byte b[][]) throws AWTException

  Construct a GIFEncoder. The constructor will convert the image to an indexed color array. This may take some time.

  Each array stores intensity values for the image. In other words, r[x][y] refers to the red intensity of the pixel at column x, row y.

  Parameters:
    r - An array containing the red intensity values.
    g - An array containing the green intensity values.
    b - An array containing the blue intensity values.
  Throws: AWTException
    Will be thrown if the image contains more than 256 colors.

##

Write

      public void Write(OutputStream output) throws IOException

  Writes the image out to a stream in the GIF file format. This will be a single GIF87a image, non-interlaced, with no background color. This may take some time.

  Parameters:
    output - The stream to output to. This should probably be a buffered stream.
  Throws: IOException
    Will be thrown if a write operation fails.