Class MetadataExtractor.TiffReader

  • Enclosing class:
    MetadataExtractor

    public class MetadataExtractor.TiffReader
    extends java.lang.Object
    Processes TIFF-formatted data, calling into client code via that MetadataExtractor.TiffHandler interface.
    Author:
    Drew Noakes https://drewnoakes.com
    • Constructor Detail

      • TiffReader

        public TiffReader()
    • Method Detail

      • processIfd

        public void processIfd​(MetadataExtractor.TiffHandler handler,
                               MetadataExtractor.RandomAccessReader reader,
                               java.util.Set<java.lang.Integer> processedIfdOffsets,
                               int ifdOffset,
                               int tiffHeaderOffset)
                        throws java.io.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 com.drew.imaging.tiff.TiffHandler that will coordinate processing and accept read values
        reader - the com.drew.lang.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:
        java.io.IOException - an error occurred while accessing the required data
      • calculateTagOffset

        private 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