Stefan Oltmann created IMAGING-370:
--------------------------------------
Summary: TiffImageWriterLossless reorders directories even if not
necessary
Key: IMAGING-370
URL: https://issues.apache.org/jira/browse/IMAGING-370
Project: Commons Imaging
Issue Type: Bug
Reporter: Stefan Oltmann
Attachments: new_taken_date.html, new_taken_date.jpg, original.html,
original.jpg
When updating the metadata of a JPG file, such as modifying the taken date,
using Commons Imaging version 1.0-alpha3, the EXIF directories are re-ordered,
even when unnecessary. I anticipate that the directories should maintain the
"normal" order, similar to how ExifTool preserves it during file writing.
Upon inspecting the source code at
[https://github.com/apache/commons-imaging/blob/2144780f0171c4af1e79b598f0a75a37ba4c1308/src/main/java/org/apache/commons/imaging/formats/tiff/write/TiffImageWriterLossless.java],
I observed a sophisticated logic for sorting elements to save space while
preserving MakerNotes.
However, it seems there might be an issue with this logic because both IFD0 and
ExifIFD appear to have sufficient space to precede MakerNotes. Notably,
manipulating the taken date using ExifTool maintains the expected order, but
Commons Imaging alters it.
I have spent considerable time attempting to understand the logic to rectify
this problem. Unfortunately, I haven't been able to grasp it well enough to
implement a fix.
To provide context on why I consider this a bug: In some manipulated files,
IFD0 has a substantial offset after manipulation. In my application, I rely on
reading the orientation flag from each file, necessitating it to be among the
first bytes to minimize unnecessary loading of the file header from a cloud
source.
[~gwlucas] , I noticed your recent involvement in a related logic deep dive
(IMAGING-319). Could you guide me on what needs to be changed to achieve the
desired behavior of having IFD0 come first?
[~damjan] , I saw your explanation on another issue regarding this process.
Could you provide assistance in understanding and resolving this issue?
I have attempted various changes, but none have yielded the expected results so
far. :(
For additional information, an HTML dump of the files for debug can be
generated using ExifTool: {{exiftool -htmlDump original.jpg > original.html}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)