Bug 2703 - EXIF 2.31 Enhancement for LibTiff 4.0.7
: EXIF 2.31 Enhancement for LibTiff 4.0.7
Status: RESOLVED LATER
: libtiff
default
: unspecified
: All All
: P2 enhancement
: ---
Assigned To:
:
:
: migrated_to_gitlab
:
:
  Show dependency treegraph
 
Reported: 2017-06-14 11:24 by
Modified: 2019-10-01 14:20 (History)


Attachments
EXIF 2.31 enhanced files based on TiffLib 4.0.7 (91.67 KB, application/octet-stream)
2017-06-14 11:24, sulau@freenet.de
Details
Patch for EXIF 2.31 enhancement to 4.0.7 (86.12 KB, patch)
2017-06-14 11:33, sulau@freenet.de
Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2017-06-14 11:24:22
Created an attachment (id=786) [details]
EXIF 2.31 enhanced files based on TiffLib 4.0.7

LibTiff version 4.0.7 is enhanced with EXIF- and GPS- tags according to EXIF
2.31 specification. 
(http://www.cipa.jp/std/documents/e/DC-008-Translation-2016-E.pdf)

Furthermore, additional enhancements and corrections are included:
1) Data type of GPS_IFD and EXIF_IFD tags are corrected from TIFF_IFD8 to
TIFF_LONG as of 
   EXIF 2.31 specification.  
   See also http://bugzilla.maptools.org/show_bug.cgi?id=2539

2) Writing and reading of rational values in custom fields is enhanced
resulting in nearly 
   double precision - standard LibTiff only has float precision. This feature
can be enabled 
   with #define RATIONAL2DOUBLE in tiffiop.h.
   However, if RATIONAL2DOUBLE is defined, parameter type for reading and
writing TIFF_RATIONAL 
   parameters using TIFFSetField() and TIFFGetField() have to be adapted to
'double' as defined 
   in tif_dirinfo.c. 

The function IsRational2Double() indicates, if the library was compiled with
this option.
See also Rationals with true DOUBLE precision for CUSTOM defined tags 
(http://bugzilla.maptools.org/show_bug.cgi?id=2542)

Attention:
   The "#define IGNORE 0" in tif_dirread.c collides with the GPS tag
"VersionID=0" and prevents 
   the tag to be read. Therefore, the #define should be redefined for example 
   to "#define IGNORE 65534 //(-2)"

FILESOURCE and SCENETYPE are defined as TIFF_UNDEFINED. However, TiffLib does
not read 
TIFF_UNDEFINED with field_readcount==1! Therefore, they should be defined as
TIFF_BYTE.

Complete changed files regarding to LibTiff version 4.0.7 are attached:
   tiffiop.h; tif_dirwrite.c; tif_dirinfo.c; tif_dirread.c; tif_dir.c; tiff.h;
tiffio.h; tif_dir.h
Furthermore a patch file against version 4.0.7 is attached too: 
   TiffLib-4.0.7_EXIF-231_.patch

Two example files for writing/reading EXIF and GPS tags are provided within the
"test" directory.  
Because EXIF sub-directory functionality in LibTiff misuses the mechanism of
multipage TIFF writing,
damaged or incomplete directory-trunks are generated easily without intention.
- custom_dir_EXIF_231.c
- custom_dir_MultiPage_EXIF.c

They give some hints, how to read / write tags with the different types.


For application of custom directories refer to:
"Custom and EXIF directory read/write", by Frank Warmerdam
http://www.asmail.be/msg0055058657.html  and
"Creating private IFD", by <sulaus@web.de>
http://www.asmail.be/msg0055095680.html

Regards
Su
------- Comment #1 From 2017-06-14 11:33:43 -------
Created an attachment (id=787) [details]
Patch for EXIF 2.31 enhancement to 4.0.7

Instead of the complete files, a patch to 4.0.7 is provided here.
Example files are only provided within the zip-file.
------- Comment #2 From 2019-04-25 08:39:03 -------
this should be put in a Merge Request
https://gitlab.com/libtiff/libtiff

I think you already done it ;)
------- Comment #3 From 2019-10-01 14:20:35 -------
Bugzilla is no longer used for tracking libtiff issues. Remaining open tickets,
such as this one, have been migrated to the libtiff GitLab instance at
https://gitlab.com/libtiff/libtiff/issues .

The migrated tickets have their summary prefixed with [BZ#XXXX] where XXXX is
the initial Bugzilla issue number.