Class TIFFReader


  • public final class TIFFReader
    extends MetadataReader
    TIFFReader
    Version:
    $Id: TIFFReader.java,v 1.0 Nov 13, 2009 5:42:51 PM haraldk Exp$
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  TIFFReader.HexDump  
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) static boolean DEBUG  
      private long inputLength  
      private boolean longOffsets  
      private int offsetSize  
      private java.util.Set<java.lang.Long> parsedIFDs  
      private static java.util.Map<java.lang.Integer,​java.util.Collection<java.lang.Integer>> VALID_SUB_IFDS  
      private static java.util.Collection<java.lang.Integer> VALID_TOP_LEVEL_IFDS  
    • Constructor Summary

      Constructors 
      Constructor Description
      TIFFReader()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private int assertIntCount​(long count)  
      private static Rational createSafeRational​(long numerator, long denominator)  
      private static java.util.Map<java.lang.Integer,​java.util.Collection<java.lang.Integer>> createSubIFDMap()  
      private long[] getPointerOffsets​(Entry entry)  
      private boolean isValidLengthAtOffset​(javax.imageio.stream.ImageInputStream input, long offset, long valueLength)  
      private boolean isValidOffset​(javax.imageio.stream.ImageInputStream input, long pos)  
      private boolean isValidType​(short type)  
      static void main​(java.lang.String[] args)  
      Directory read​(javax.imageio.stream.ImageInputStream input)  
      private TIFFEntry readEntry​(javax.imageio.stream.ImageInputStream pInput)  
      private long readEntryCount​(javax.imageio.stream.ImageInputStream pInput)  
      private IFD readIFD​(javax.imageio.stream.ImageInputStream pInput, long pOffset, java.util.Collection<java.lang.Integer> subIFDIds)  
      private TIFFDirectory readLinkedIFDs​(javax.imageio.stream.ImageInputStream input)  
      private long readOffset​(javax.imageio.stream.ImageInputStream input)  
      private void readSubIFDs​(javax.imageio.stream.ImageInputStream input, java.util.List<TIFFEntry> entries, java.util.Collection<java.lang.Integer> subIFDIds)  
      private static java.lang.Object readValue​(javax.imageio.stream.ImageInputStream pInput, short pType, int pCount, boolean bigTIFF)  
      private java.lang.Object readValueAt​(javax.imageio.stream.ImageInputStream input, long offset, long length, short type, int count)  
      private int readValueCount​(javax.imageio.stream.ImageInputStream pInput)  
      private java.lang.Object readValueInLine​(javax.imageio.stream.ImageInputStream pInput, short pType, int pCount)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEBUG

        static final boolean DEBUG
      • VALID_TOP_LEVEL_IFDS

        private static final java.util.Collection<java.lang.Integer> VALID_TOP_LEVEL_IFDS
      • VALID_SUB_IFDS

        private static final java.util.Map<java.lang.Integer,​java.util.Collection<java.lang.Integer>> VALID_SUB_IFDS
      • parsedIFDs

        private final java.util.Set<java.lang.Long> parsedIFDs
      • inputLength

        private long inputLength
      • longOffsets

        private boolean longOffsets
      • offsetSize

        private int offsetSize
    • Constructor Detail

      • TIFFReader

        public TIFFReader()
    • Method Detail

      • createSubIFDMap

        private static java.util.Map<java.lang.Integer,​java.util.Collection<java.lang.Integer>> createSubIFDMap()
      • read

        public Directory read​(javax.imageio.stream.ImageInputStream input)
                       throws java.io.IOException
        Specified by:
        read in class MetadataReader
        Throws:
        java.io.IOException
      • readLinkedIFDs

        private TIFFDirectory readLinkedIFDs​(javax.imageio.stream.ImageInputStream input)
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • readOffset

        private long readOffset​(javax.imageio.stream.ImageInputStream input)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • readIFD

        private IFD readIFD​(javax.imageio.stream.ImageInputStream pInput,
                            long pOffset,
                            java.util.Collection<java.lang.Integer> subIFDIds)
                     throws java.io.IOException
        Throws:
        java.io.IOException
      • readEntryCount

        private long readEntryCount​(javax.imageio.stream.ImageInputStream pInput)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • readSubIFDs

        private void readSubIFDs​(javax.imageio.stream.ImageInputStream input,
                                 java.util.List<TIFFEntry> entries,
                                 java.util.Collection<java.lang.Integer> subIFDIds)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • getPointerOffsets

        private long[] getPointerOffsets​(Entry entry)
                                  throws javax.imageio.IIOException
        Throws:
        javax.imageio.IIOException
      • readEntry

        private TIFFEntry readEntry​(javax.imageio.stream.ImageInputStream pInput)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • isValidType

        private boolean isValidType​(short type)
      • readValueCount

        private int readValueCount​(javax.imageio.stream.ImageInputStream pInput)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • assertIntCount

        private int assertIntCount​(long count)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • isValidOffset

        private boolean isValidOffset​(javax.imageio.stream.ImageInputStream input,
                                      long pos)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • isValidLengthAtOffset

        private boolean isValidLengthAtOffset​(javax.imageio.stream.ImageInputStream input,
                                              long offset,
                                              long valueLength)
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • readValueAt

        private java.lang.Object readValueAt​(javax.imageio.stream.ImageInputStream input,
                                             long offset,
                                             long length,
                                             short type,
                                             int count)
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • readValueInLine

        private java.lang.Object readValueInLine​(javax.imageio.stream.ImageInputStream pInput,
                                                 short pType,
                                                 int pCount)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • readValue

        private static java.lang.Object readValue​(javax.imageio.stream.ImageInputStream pInput,
                                                  short pType,
                                                  int pCount,
                                                  boolean bigTIFF)
                                           throws java.io.IOException
        Throws:
        java.io.IOException
      • createSafeRational

        private static Rational createSafeRational​(long numerator,
                                                   long denominator)
      • main

        public static void main​(java.lang.String[] args)
                         throws java.io.IOException
        Throws:
        java.io.IOException