Package org.jzy3d.io.gif
Class GifDecoder
java.lang.Object
org.jzy3d.io.gif.GifDecoder
Class GifDecoder - Decodes a GIF file into one or more frames.
Example:
GifDecoder d = new GifDecoder();
d.read("sample.gif");
int n = d.getFrameCount();
for (int i = 0; i < n; i++) {
BufferedImage frame = d.getFrame(i); // frame i
int t = d.getDelay(i); // display duration of frame in milliseconds
// do something with frame
}
No copyright asserted on the source code of this class. May be used for
any purpose, however, refer to the Unisys LZW patent for any additional
restrictions. Please forward any corrections to questions at fmsware.com.- Version:
- 1.03 November 2003
- Author:
- Kevin Weiner, FM Software; LZW decoder adapted from John Cristy's ImageMagick.
-
Field Summary
Modifier and TypeFieldDescriptionprotected int[]
protected int
protected int
protected byte[]
protected int
protected int
protected int
protected int
protected ArrayList
protected int[]
protected boolean
protected int
protected int
protected int
protected BufferedImage
protected BufferedInputStream
protected boolean
protected int
protected int
protected int
protected int
protected int
protected BufferedImage
protected Rectangle
protected int[]
protected boolean
protected int
protected int
protected static final int
protected int
protected byte[]
protected byte[]
protected short[]
protected int
static final int
File read status: Error decoding file (may be partially decoded)static final int
File read status: No errors.static final int
File read status: Unable to open source.protected byte[]
protected int
protected boolean
protected int
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
Decodes LZW image data into pixel array.protected boolean
err()
Returns true if an error was encountered during reading/decodingint
getDelay
(int n) Gets display duration for specified frame.getFrame
(int n) Gets the image contents of frame n.int
Gets the number of frames read from file.Gets image size.getImage()
Gets the first (or only) image read.int
Gets the "Netscape" iteration count, if any.protected void
init()
Initializes or re-initializes readerprotected int
read()
Reads a single byte from the input stream.int
Reads GIF image from streamint
read
(InputStream is) Reads GIF image from streamint
Reads GIF file from specified file/URL source (URL assumed if name contains ":/" or "file:")protected int
Reads next variable length block from input.protected int[]
readColorTable
(int ncolors) Reads color table as 256 RGB integer valuesprotected void
Main file parser.protected void
Reads Graphics Control Extension valuesprotected void
Reads GIF file header information.protected void
Reads next frame imageprotected void
readLSD()
Reads Logical Screen Descriptorprotected void
Reads Netscape extenstion to obtain iteration countprotected int
Reads next 16-bit value, LSB firstprotected void
Resets frame state for reading next image.protected void
Creates new frame image from current data (and previous frames as specified by their disposition codes).protected void
skip()
Skips variable length blocks up to and including next zero length block.
-
Field Details
-
STATUS_OK
public static final int STATUS_OKFile read status: No errors.- See Also:
-
STATUS_FORMAT_ERROR
public static final int STATUS_FORMAT_ERRORFile read status: Error decoding file (may be partially decoded)- See Also:
-
STATUS_OPEN_ERROR
public static final int STATUS_OPEN_ERRORFile read status: Unable to open source.- See Also:
-
in
-
status
protected int status -
width
protected int width -
height
protected int height -
gctFlag
protected boolean gctFlag -
gctSize
protected int gctSize -
loopCount
protected int loopCount -
gct
protected int[] gct -
lct
protected int[] lct -
act
protected int[] act -
bgIndex
protected int bgIndex -
bgColor
protected int bgColor -
lastBgColor
protected int lastBgColor -
pixelAspect
protected int pixelAspect -
lctFlag
protected boolean lctFlag -
interlace
protected boolean interlace -
lctSize
protected int lctSize -
ix
protected int ix -
iy
protected int iy -
iw
protected int iw -
ih
protected int ih -
lastRect
-
image
-
lastImage
-
block
protected byte[] block -
blockSize
protected int blockSize -
dispose
protected int dispose -
lastDispose
protected int lastDispose -
transparency
protected boolean transparency -
delay
protected int delay -
transIndex
protected int transIndex -
MaxStackSize
protected static final int MaxStackSize- See Also:
-
prefix
protected short[] prefix -
suffix
protected byte[] suffix -
pixelStack
protected byte[] pixelStack -
pixels
protected byte[] pixels -
frames
-
frameCount
protected int frameCount
-
-
Constructor Details
-
GifDecoder
public GifDecoder()
-
-
Method Details
-
getDelay
public int getDelay(int n) Gets display duration for specified frame.- Parameters:
n
- int index of frame- Returns:
- delay in milliseconds
-
getFrameCount
public int getFrameCount()Gets the number of frames read from file.- Returns:
- frame count
-
getImage
Gets the first (or only) image read.- Returns:
- BufferedImage containing first frame, or null if none.
-
getLoopCount
public int getLoopCount()Gets the "Netscape" iteration count, if any. A count of 0 means repeat indefinitiely.- Returns:
- iteration count if one was specified, else 1.
-
setPixels
protected void setPixels()Creates new frame image from current data (and previous frames as specified by their disposition codes). -
getFrame
Gets the image contents of frame n.- Returns:
- BufferedImage representation of frame, or null if n is invalid.
-
getFrameSize
Gets image size.- Returns:
- GIF image dimensions
-
read
Reads GIF image from stream- Parameters:
is
- BufferedInputStream containing GIF file.- Returns:
- read status code (0 = no errors)
-
read
Reads GIF image from stream- Parameters:
is
- InputStream containing GIF file.- Returns:
- read status code (0 = no errors)
-
read
Reads GIF file from specified file/URL source (URL assumed if name contains ":/" or "file:")- Parameters:
name
- String containing source- Returns:
- read status code (0 = no errors)
-
decodeImageData
protected void decodeImageData()Decodes LZW image data into pixel array. Adapted from John Cristy's ImageMagick. -
err
protected boolean err()Returns true if an error was encountered during reading/decoding -
init
protected void init()Initializes or re-initializes reader -
read
protected int read()Reads a single byte from the input stream. -
readBlock
protected int readBlock()Reads next variable length block from input.- Returns:
- number of bytes stored in "buffer"
-
readColorTable
protected int[] readColorTable(int ncolors) Reads color table as 256 RGB integer values- Parameters:
ncolors
- int number of colors to read- Returns:
- int array containing 256 colors (packed ARGB with full alpha)
-
readContents
protected void readContents()Main file parser. Reads GIF content blocks. -
readGraphicControlExt
protected void readGraphicControlExt()Reads Graphics Control Extension values -
readHeader
protected void readHeader()Reads GIF file header information. -
readImage
protected void readImage()Reads next frame image -
readLSD
protected void readLSD()Reads Logical Screen Descriptor -
readNetscapeExt
protected void readNetscapeExt()Reads Netscape extenstion to obtain iteration count -
readShort
protected int readShort()Reads next 16-bit value, LSB first -
resetFrame
protected void resetFrame()Resets frame state for reading next image. -
skip
protected void skip()Skips variable length blocks up to and including next zero length block.
-