loci.formats.in

## Class GIFReader

- java.lang.Object
- - loci.formats.FormatHandler
  - - loci.formats.FormatReader
    - - loci.formats.in.GIFReader

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, ICompressedTileReader, IFormatHandler, IFormatReader, IMetadataConfigurable, IPyramidHandler

      public class GIFReader
      extends FormatReader

  GIFReader is the file format reader for Graphics Interchange Format (GIF) files. Much of this code was adapted from the Animated GIF Reader plugin for ImageJ (http://rsb.info.nih.gov/ij).

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int[]` | `act` Active color table.
    `private int` | `blockSize` Block size.
    `private java.util.Vector<int[]>` | `colorTables`
    `private byte[]` | `dBlock` Current data block.
    `private int` | `dispose`
    `private static int` | `END`
    `private static int` | `EXTENSION`
    `private int[]` | `gct` Global color table.
    `static java.lang.String` | `GIF_MAGIC_STRING`
    `private static int` | `GRAPHICS`
    `private int` | `ih` Current image rectangle.
    `private static int` | `IMAGE_SEPARATOR`
    `private java.util.Vector<byte[]>` | `images`
    `private boolean` | `interlace` Interlace flag.
    `private int` | `iw` Current image rectangle.
    `private int` | `ix` Current image rectangle.
    `private int` | `iy` Current image rectangle.
    `private int` | `lastDispose`
    `private static int` | `MAX_STACK_SIZE` Maximum buffer size.
    `private byte[]` | `pixels`
    `private byte[]` | `pixelStack`
    `private java.util.Set<java.lang.Integer>` | `planesRead`
    `private short[]` | `prefix`
    `private byte[]` | `suffix`
    `private int` | `transIndex` Transparent color index.
    `private boolean` | `transparency` Use transparent color.

    - ### Fields inherited from class loci.formats.FormatReader

      `core, coreIndex, datasetDescription, domains, fillColor, filterMetadata, flattenedResolutions, group, hasCompanionFiles, in, indexedAsRGB, metadata, metadataStore, normalizeData, resolution, saveOriginalMetadata, series, suffixNecessary, suffixSufficient, THUMBNAIL_DIMENSION`

    - ### Fields inherited from class loci.formats.FormatHandler

      `COMPRESSION_SUFFIXES, currentId, format, LOGGER, metadataOptions, suffixes`

    - ### Fields inherited from interface loci.formats.IFormatReader

      `CAN_GROUP, CANNOT_GROUP, MUST_GROUP`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GIFReader()` Constructs a new GIF reader.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close(boolean fileOnly)` Closes the currently open file.
    `private void` | `decodeImageData()` Decodes LZW image data into a pixel array.
    `byte[][]` | `get8BitLookupTable()` Gets the 8-bit color lookup table associated with the most recently opened image.
    `protected void` | `initFile(java.lang.String id)` Initializes the given file (parsing header information, etc.).
    `boolean` | `isThisType(loci.common.RandomAccessInputStream stream)` Checks if the given stream is a valid stream for this file format.
    `byte[]` | `openBytes(int no, byte[] buf, int x, int y, int w, int h)` Obtains a sub-image of the specified image plane into a pre-allocated byte array.
    `private int` | `readBlock()` Reads the next variable length block.
    `private void` | `readImageBlock()`
    `private int[]` | `readLut(int size)` Read a color lookup table of the specified size.
    `private void` | `setPixels()`
    `private void` | `skipBlocks()`

    - ### Methods inherited from class loci.formats.FormatReader

      `addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMetaList, addMeta, addMetaList, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMetaList, close, coreIndexToSeries, fileGroupOption, flattenHashtables, get16BitLookupTable, getAcquisitionMode, getAdvancedSeriesUsedFiles, getAdvancedUsedFiles, getArcType, getAvailableOptions, getBinning, getBitsPerPixel, getCompression, getContrastMethod, getCoreIndex, getCoreMetadataList, getCorrection, getCurrentCore, getCurrentFile, getDatasetStructureDescription, getDetectorType, getDimensionOrder, getDimensionOrder, getDomains, getEffectiveSizeC, getExperimentType, getFilamentType, getFillColor, getFillRule, getFilterType, getFontFamily, getFontStyle, getGlobalMeta, getGlobalMetadata, getIlluminationType, getImageCount, getImmersion, getIndex, getIndex, getLaserMedium, getLaserType, getMarker, getMedium, getMetadataStore, getMetadataStoreRoot, getMetadataValue, getMicrobeamManipulationType, getMicroscopeType, getModuloC, getModuloT, getModuloZ, getNamingConvention, getOptimalTileHeight, getOptimalTileWidth, getPixelType, getPixelType, getPossibleDomains, getPulse, getRequiredDirectories, getResolution, getResolutionCount, getRGBChannelCount, getRotationTransform, getSeries, getSeriesCount, getSeriesMeta, getSeriesMetadata, getSeriesMetadataValue, getSeriesUsedFiles, getSeriesUsedFiles, getSizeC, getSizeT, getSizeX, getSizeY, getSizeZ, getThumbSizeX, getThumbSizeY, getTileColumns, getTileRows, getUnderlyingReaders, getUsedFiles, getUsedFiles, getZCTCoords, getZCTModuloCoords, hasCompanionFiles, hasFlattenedResolutions, isFalseColor, isGroupFiles, isIndexed, isInterleaved, isInterleaved, isLittleEndian, isMetadataComplete, isMetadataFiltered, isNormalized, isOrderCertain, isOriginalMetadataPopulated, isRGB, isSingleFile, isThisType, isThisType, isThisType, isThumbnailSeries, isUsedFile, makeFilterMetadata, openBytes, openBytes, openBytes, openPlane, openThumbBytes, readPlane, readPlane, readPlane, reopenFile, seriesToCoreIndex, setCoreIndex, setFillColor, setFlattenedResolutions, setGroupFiles, setId, setMetadataFiltered, setMetadataStore, setNormalized, setOriginalMetadataPopulated, setResolution, setSeries, updateMetadataLists`

    - ### Methods inherited from class loci.formats.FormatHandler

      `checkSuffix, checkSuffix, getFormat, getMetadataOptions, getNativeDataType, getSuffixes, getSupportedMetadataLevels, setMetadataOptions`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface loci.formats.IFormatHandler

      `getFormat, getNativeDataType, getSuffixes`

    - ### Methods inherited from interface loci.formats.IMetadataConfigurable

      `getMetadataOptions, getSupportedMetadataLevels, setMetadataOptions`

    - ### Methods inherited from interface loci.formats.ICompressedTileReader

      `getTileCodec, getTileCodecOptions, openCompressedBytes, openCompressedBytes`

- - ### Field Detail

    - #### GIF_MAGIC_STRING

          public static final java.lang.String GIF_MAGIC_STRING

      See Also:
        Constant Field Values

    - #### MAX_STACK_SIZE

          private static final int MAX_STACK_SIZE

      Maximum buffer size.
      See Also:
        Constant Field Values

    - #### IMAGE_SEPARATOR

          private static final int IMAGE_SEPARATOR

      See Also:
        Constant Field Values

    - #### EXTENSION

          private static final int EXTENSION

      See Also:
        Constant Field Values

    - #### END

          private static final int END

      See Also:
        Constant Field Values

    - #### GRAPHICS

          private static final int GRAPHICS

      See Also:
        Constant Field Values

    - #### gct

          private int[] gct

      Global color table.

    - #### act

          private int[] act

      Active color table.

    - #### interlace

          private boolean interlace

      Interlace flag.

    - #### ix

          private int ix

      Current image rectangle.

    - #### iy

          private int iy

      Current image rectangle.

    - #### iw

          private int iw

      Current image rectangle.

    - #### ih

          private int ih

      Current image rectangle.

    - #### dBlock

          private byte[] dBlock

      Current data block.

    - #### blockSize

          private int blockSize

      Block size.

    - #### dispose

          private int dispose

    - #### lastDispose

          private int lastDispose

    - #### transparency

          private boolean transparency

      Use transparent color.

    - #### transIndex

          private int transIndex

      Transparent color index.

    - #### prefix

          private short[] prefix

    - #### suffix

          private byte[] suffix

    - #### pixelStack

          private byte[] pixelStack

    - #### pixels

          private byte[] pixels

    - #### images

          private java.util.Vector<byte[]> images

    - #### colorTables

          private java.util.Vector<int[]> colorTables

    - #### planesRead

          private transient java.util.Set<java.lang.Integer> planesRead

  - ### Constructor Detail

    - #### GIFReader

          public GIFReader()

      Constructs a new GIF reader.

  - ### Method Detail

    - #### isThisType

          public boolean isThisType(loci.common.RandomAccessInputStream stream)
                             throws java.io.IOException

      Description copied from interface: `IFormatReader`
      Checks if the given stream is a valid stream for this file format. The number of bytes read is format-dependent.
      Specified by:
        `isThisType` in interface `IFormatReader`
      Overrides:
        `isThisType` in class `FormatReader`
      Parameters:
        `stream` - A RandomAccessInputStream representing the file to check. The first byte in the stream is assumed to be the first byte in the file.
      Returns:
        true if the file represented by the stream can be read by this reader; false otherwise.
      Throws:
        `java.io.IOException`

    - #### get8BitLookupTable

          public byte[][] get8BitLookupTable()
                                      throws FormatException,
                                             java.io.IOException

      Description copied from interface: `IFormatReader`
      Gets the 8-bit color lookup table associated with the most recently opened image. If no image planes have been opened, or if `IFormatReader.isIndexed()` returns false, then this may return null. Also, if `IFormatReader.getPixelType()` returns anything other than `FormatTools.INT8` or `FormatTools.UINT8`, this method will return null.
      Specified by:
        `get8BitLookupTable` in interface `IFormatReader`
      Overrides:
        `get8BitLookupTable` in class `FormatReader`
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### openBytes

          public byte[] openBytes(int no,
                                  byte[] buf,
                                  int x,
                                  int y,
                                  int w,
                                  int h)
                           throws FormatException,
                                  java.io.IOException

      Description copied from interface: `IFormatReader`
      Obtains a sub-image of the specified image plane into a pre-allocated byte array.
      Specified by:
        `openBytes` in interface `IFormatReader`
      Specified by:
        `openBytes` in class `FormatReader`
      Parameters:
        `no` - the plane index within the current series.
        `buf` - a pre-allocated buffer.
        `x` - X coordinate of the upper-left corner of the sub-image
        `y` - Y coordinate of the upper-left corner of the sub-image
        `w` - width of the sub-image
        `h` - height of the sub-image
      Returns:
        the pre-allocated buffer `buf` for convenience.
      Throws:
        `FormatException` - if there was a problem parsing the metadata of the file.
        `java.io.IOException` - if there was a problem reading the file.
      See Also:
        `IFormatReader.openBytes(int, byte[], int, int, int, int)`

    - #### close

          public void close(boolean fileOnly)
                     throws java.io.IOException

      Description copied from interface: `IFormatReader`
      Closes the currently open file. If the flag is set, this is all that happens; if unset, it is equivalent to calling `Closeable.close()`.
      Specified by:
        `close` in interface `IFormatReader`
      Overrides:
        `close` in class `FormatReader`
      Throws:
        `java.io.IOException`

    - #### initFile

          protected void initFile(java.lang.String id)
                           throws FormatException,
                                  java.io.IOException

      Description copied from class: `FormatReader`
      Initializes the given file (parsing header information, etc.). Most subclasses should override this method to perform initialization operations such as parsing metadata.
      Overrides:
        `initFile` in class `FormatReader`
      Throws:
        `FormatException` - if a parsing error occurs processing the file.
        `java.io.IOException` - if an I/O error occurs processing the file

    - #### readBlock

          private int readBlock()
                         throws java.io.IOException

      Reads the next variable length block.
      Throws:
        `java.io.IOException`

    - #### decodeImageData

          private void decodeImageData()
                                throws java.io.IOException

      Decodes LZW image data into a pixel array. Adapted from ImageMagick.
      Throws:
        `java.io.IOException`

    - #### setPixels

          private void setPixels()

    - #### skipBlocks

          private void skipBlocks()
                           throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### readImageBlock

          private void readImageBlock()
                               throws FormatException,
                                      java.io.IOException

      Throws:
        `FormatException`
        `java.io.IOException`

    - #### readLut

          private int[] readLut(int size)
                         throws FormatException

      Read a color lookup table of the specified size.
      Throws:
        `FormatException`

Copyright © 2026 Open Microscopy Environment