fix exif bug
authoryaohai [姚海] <yaohai@xiaomi.com>
Mon, 5 Aug 2019 09:11:46 +0000 (17:11 +0800)
committeryaohai [姚海] <yaohai@xiaomi.com>
Mon, 5 Aug 2019 13:41:07 +0000 (16:41 +0300)
modules/imgcodecs/src/exif.cpp
modules/imgcodecs/src/exif.hpp

index a556dd0..051999c 100644 (file)
@@ -229,7 +229,7 @@ void ExifReader::parseExif()
 
     uint32_t offset = getStartOffset();
 
-    size_t numEntry = getNumDirEntry();
+    size_t numEntry = getNumDirEntry( offset );
 
     offset += 2; //go to start of tag fields
 
@@ -303,7 +303,7 @@ uint32_t ExifReader::getStartOffset() const
  *
  * @return The number of directory entries
  */
-size_t ExifReader::getNumDirEntry() const
+size_t ExifReader::getNumDirEntry(const size_t offsetNumDir) const
 {
     return getU16( offsetNumDir );
 }
index bbc92e8..f7f4e38 100644 (file)
@@ -199,7 +199,7 @@ private:
     bool checkTagMark() const;
 
     size_t getFieldSize ();
-    size_t getNumDirEntry() const;
+    size_t getNumDirEntry( const size_t offsetNumDir ) const;
     uint32_t getStartOffset() const;
     uint16_t getExifTag( const size_t offset ) const;
     uint16_t getU16( const size_t offset ) const;
@@ -225,9 +225,6 @@ private:
 private:
     static const uint16_t tagMarkRequired = 0x2A;
 
-    //offset to the _number-of-directory-entry_ field
-    static const size_t offsetNumDir = 8;
-
     //max size of data in tag.
     //'DDDDDDDD' contains the value of that Tag. If its size is over 4bytes,
     //'DDDDDDDD' contains the offset to data stored address.