I've changed the code so that it reads:
// Go back to the first (main) directory, and set
correct value of the
// EXIFIFD pointer. Note that the directory is reloaded
from the file!
//
TIFFSetDirectory(m_tiff, 0);
TIFFSetField(m_tiff, TIFFTAG_EXIFIFD, dir_offset_EXIF);
TIFFWriteDirectory(m_tiff);
TIFFSetDirectory(m_tiff, 0);
}
So that should sort the problem? Is that right?
Thanks,David
From: Sulau <[email protected]>
Sent: 12 April 2023 17:26
To: 'David C. Partridge' <[email protected]>
Cc: [email protected]
Subject: Re: [Tiff] TIffWriteDirectory() causes problems
Hi David
The TIFF documentation of TIFF WriteDirectory() says:
"
<http://www.simplesystems.org/libtiff/functions/TIFFWriteDirectory.html#c.TI
FFWriteDirectory> TIFFWriteDirectory() will write the contents of the
current directory (IFD) to the file and setup to create a new directory
(IFD) using
<http://www.simplesystems.org/libtiff/functions/TIFFCreateDirectory.html#c.T
IFFCreateDirectory> TIFFCreateDirectory(). "
This means that then m_tiff points to a new, empty directory and therefore
TiffScanlineSize() returns zero.
If you want to go back to the previously written IFD you have to use
TIFFSetDirectory(m_tiff, dirnumber), which re-reads the IFD (dirnumber) from
file.
Or you could first write the image data straight after "TIFFSetField(m_tiff,
TIFFTAG_EXIFID, dir_offset_EXIF);" and then call TIFFWriteDirectory() just
before TIFFClose().
Regards
Su
_______________________________________________
Tiff mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/tiff