Class TiffReader

java.lang.Object
com.drew.imaging.tiff.TiffReader

public class TiffReader extends Object
Processes TIFF-formatted data, calling into client code via that TiffHandler interface.
  • Constructor Details

    • TiffReader

      public TiffReader()
  • Method Details

    • processTiff

      public void processTiff(RandomAccessReader reader, TiffHandler handler, int tiffHeaderOffset) throws TiffProcessingException, IOException
      Processes a TIFF data sequence.
      Parameters:
      reader - the RandomAccessReader from which the data should be read
      handler - the TiffHandler that will coordinate processing and accept read values
      tiffHeaderOffset - the offset within reader at which the TIFF header starts
      Throws:
      TiffProcessingException - if an error occurred during the processing of TIFF data that could not be ignored or recovered from
      IOException - an error occurred while accessing the required data
    • processIfd

      public static void processIfd(TiffHandler handler, RandomAccessReader reader, Set<Integer> processedIfdOffsets, int ifdOffset, int tiffHeaderOffset) throws IOException
      Processes a TIFF IFD. IFD Header:
      • 2 bytes number of tags
      Tag structure:
      • 2 bytes tag type
      • 2 bytes format code (values 1 to 12, inclusive)
      • 4 bytes component count
      • 4 bytes inline value, or offset pointer if too large to fit in four bytes
      Parameters:
      handler - the TiffHandler that will coordinate processing and accept read values
      reader - the RandomAccessReader from which the data should be read
      processedIfdOffsets - the set of visited IFD offsets, to avoid revisiting the same IFD in an endless loop
      ifdOffset - the offset within reader at which the IFD data starts
      tiffHeaderOffset - the offset within reader at which the TIFF header starts
      Throws:
      IOException - an error occurred while accessing the required data
    • processTag

      private static void processTag(TiffHandler handler, int tagId, int tagValueOffset, int componentCount, int formatCode, RandomAccessReader reader) throws IOException
      Throws:
      IOException
    • calculateTagOffset

      private static int calculateTagOffset(int ifdStartOffset, int entryNumber)
      Determine the offset of a given tag within the specified IFD.
      Parameters:
      ifdStartOffset - the offset at which the IFD starts
      entryNumber - the zero-based entry number