Class TIFFDirectory

java.lang.Object
com.itextpdf.io.codec.TIFFDirectory

public class TIFFDirectory extends Object
A class representing an Image File Directory (IFD) from a TIFF 6.0 stream. The TIFF file format is described in more detail in the comments for the TIFFDescriptor class.

A TIFF IFD consists of a set of TIFFField tags. Methods are provided to query the set of tags and to obtain the raw field array. In addition, convenience methods are provided for acquiring the values of tags that contain a single value that fits into a byte, int, long, float, or double.

Every TIFF file is made up of one or more public IFDs that are joined in a linked list, rooted in the file header. A file may also contain so-called private IFDs that are referenced from tag data and do not appear in the main list.

This class is not a committed part of the JAI API. It may be removed or changed in future releases of JAI.

See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    TIFFDirectory(RandomAccessFileOrArray stream, int directory)
    Constructs a TIFFDirectory from a SeekableStream.
    TIFFDirectory(RandomAccessFileOrArray stream, long ifd_offset, int directory)
    Constructs a TIFFDirectory by reading a SeekableStream.
  • Method Summary

    Modifier and Type
    Method
    Description
    getField(int tag)
    Returns the value of a given tag as a TIFFField, or null if the tag is not present.
    byte
    getFieldAsByte(int tag)
    Returns the value of index 0 of a given tag as a byte.
    byte
    getFieldAsByte(int tag, int index)
    Returns the value of a particular index of a given tag as a byte.
    double
    getFieldAsDouble(int tag)
    Returns the value of index 0 of a given tag as a double.
    double
    getFieldAsDouble(int tag, int index)
    Returns the value of a particular index of a given tag as a double.
    float
    getFieldAsFloat(int tag)
    Returns the value of index 0 of a given tag as a float.
    float
    getFieldAsFloat(int tag, int index)
    Returns the value of a particular index of a given tag as a float.
    long
    getFieldAsLong(int tag)
    Returns the value of index 0 of a given tag as a long.
    long
    getFieldAsLong(int tag, int index)
    Returns the value of a particular index of a given tag as a long.
    Returns an array of TIFFFields containing all the fields in this directory.
    long
    Returns the offset of the IFD corresponding to this TIFFDirectory.
    long
    Returns the offset of the next IFD after the IFD corresponding to this TIFFDirectory.
    static int
    Returns the number of image directories (subimages) stored in a given TIFF file, represented by a SeekableStream.
    int
    Returns the number of directory entries.
    int[]
    Returns an ordered array of integers indicating the tags values.
    boolean
    Returns a boolean indicating whether the byte order used in the TIFF file is big-endian (i.e.
    boolean
    isTagPresent(int tag)
    Returns true if a tag appears in the directory.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • TIFFDirectory

      public TIFFDirectory (RandomAccessFileOrArray stream, int directory) throws IOException
      Constructs a TIFFDirectory from a SeekableStream. The directory parameter specifies which directory to read from the linked list present in the stream; directory 0 is normally read but it is possible to store multiple images in a single TIFF file by maintaining multiple directories.
      Parameters:
      stream - a SeekableStream to read from.
      directory - the index of the directory to read.
      Throws:
      IOException - in case of any I/O error.
    • TIFFDirectory

      public TIFFDirectory (RandomAccessFileOrArray stream, long ifd_offset, int directory) throws IOException
      Constructs a TIFFDirectory by reading a SeekableStream. The ifd_offset parameter specifies the stream offset from which to begin reading; this mechanism is sometimes used to store private IFDs within a TIFF file that are not part of the normal sequence of IFDs.
      Parameters:
      stream - a SeekableStream to read from.
      ifd_offset - the long byte offset of the directory.
      directory - the index of the directory to read beyond the one at the current stream offset; zero indicates the IFD at the current offset.
      Throws:
      IOException - in case of any I/O error.
  • Method Details

    • getNumEntries

      public int getNumEntries()
      Returns the number of directory entries.
      Returns:
      The number of directory entries
    • getField

      public TIFFField getField (int tag)
      Returns the value of a given tag as a TIFFField, or null if the tag is not present.
      Parameters:
      tag - The tag
      Returns:
      The value of the given tag as a TIFFField or null
    • isTagPresent

      public boolean isTagPresent (int tag)
      Returns true if a tag appears in the directory.
      Parameters:
      tag - The tag
      Returns:
      True if the tag appears in the directory, false otherwise
    • getTags

      public int[] getTags()
      Returns an ordered array of integers indicating the tags values.
      Returns:
      an ordered array of integers indicating the tags
    • getFields

      public TIFFField[] getFields()
      Returns an array of TIFFFields containing all the fields in this directory.
      Returns:
      an array of TIFFFields containing all the fields in this directory
    • getFieldAsByte

      public byte getFieldAsByte (int tag, int index)
      Returns the value of a particular index of a given tag as a byte. The caller is responsible for ensuring that the tag is present and has type TIFFField.TIFF_SBYTE, TIFF_BYTE, or TIFF_UNDEFINED.
      Parameters:
      tag - The tag
      index - The index
      Returns:
      the value of a particular index of a given tag as a byte
    • getFieldAsByte

      public byte getFieldAsByte (int tag)
      Returns the value of index 0 of a given tag as a byte. The caller is responsible for ensuring that the tag is present and has type TIFFField.TIFF_SBYTE, TIFF_BYTE, or TIFF_UNDEFINED.
      Parameters:
      tag - The tag
      Returns:
      The value of index 0 of the given tag as a byte
    • getFieldAsLong

      public long getFieldAsLong (int tag, int index)
      Returns the value of a particular index of a given tag as a long. The caller is responsible for ensuring that the tag is present and has type TIFF_BYTE, TIFF_SBYTE, TIFF_UNDEFINED, TIFF_SHORT, TIFF_SSHORT, TIFF_SLONG or TIFF_LONG.
      Parameters:
      tag - The tag
      index - The index
      Returns:
      The value of the given index of the given tag as a long
    • getFieldAsLong

      public long getFieldAsLong (int tag)
      Returns the value of index 0 of a given tag as a long. The caller is responsible for ensuring that the tag is present and has type TIFF_BYTE, TIFF_SBYTE, TIFF_UNDEFINED, TIFF_SHORT, TIFF_SSHORT, TIFF_SLONG or TIFF_LONG.
      Parameters:
      tag - The tag
      Returns:
      The value of index 0 of the given tag as a long
    • getFieldAsFloat

      public float getFieldAsFloat (int tag, int index)
      Returns the value of a particular index of a given tag as a float. The caller is responsible for ensuring that the tag is present and has numeric type (all but TIFF_UNDEFINED and TIFF_ASCII).
      Parameters:
      tag - The tag
      index - The index
      Returns:
      The value of the given index of the given tag as a float
    • getFieldAsFloat

      public float getFieldAsFloat (int tag)
      Returns the value of index 0 of a given tag as a float. The caller is responsible for ensuring that the tag is present and has numeric type (all but TIFF_UNDEFINED and TIFF_ASCII).
      Parameters:
      tag - The tag
      Returns:
      The value of index 0 of the given tag as a float
    • getFieldAsDouble

      public double getFieldAsDouble (int tag, int index)
      Returns the value of a particular index of a given tag as a double. The caller is responsible for ensuring that the tag is present and has numeric type (all but TIFF_UNDEFINED and TIFF_ASCII).
      Parameters:
      tag - The tag
      index - The index
      Returns:
      The value of the given index of the given tag as a double
    • getFieldAsDouble

      public double getFieldAsDouble (int tag)
      Returns the value of index 0 of a given tag as a double. The caller is responsible for ensuring that the tag is present and has numeric type (all but TIFF_UNDEFINED and TIFF_ASCII).
      Parameters:
      tag - The tag
      Returns:
      The value of index 0 of the given tag as a double
    • getNumDirectories

      public static int getNumDirectories (RandomAccessFileOrArray stream) throws IOException
      Returns the number of image directories (subimages) stored in a given TIFF file, represented by a SeekableStream.
      Parameters:
      stream - RandomAccessFileOrArray
      Returns:
      The number of image directories (subimages) stored in a given TIFF file
      Throws:
      IOException - in case of any I/O error.
    • isBigEndian

      public boolean isBigEndian()
      Returns a boolean indicating whether the byte order used in the TIFF file is big-endian (i.e. whether the byte order is from the most significant to the least significant)
      Returns:
      true if the byte order used in the TIFF file is big-endian
    • getIFDOffset

      public long getIFDOffset()
      Returns the offset of the IFD corresponding to this TIFFDirectory.
      Returns:
      the offset of the IFD corresponding to this TIFFDirectory.
    • getNextIFDOffset

      public long getNextIFDOffset()
      Returns the offset of the next IFD after the IFD corresponding to this TIFFDirectory.
      Returns:
      the offset of the next IFD after the IFD corresponding to this TIFFDirectory.