So the code I have to open a TIFF file ends as follows:

                    //

                    // Now that all the EXIF tags are written, need to write
the EXIF

                    // custom directory into the file...

                    // 

                    // WriteCustomDirectory returns the actual offset of the
EXIF directory.

                    //

                    TIFFWriteCustomDirectory(m_tiff, &dir_offset_EXIF);

 

                    // 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);

 

             }

             else

             {

                    TIFFClose(m_tiff);

                    m_tiff = nullptr;

             };

       };

 

       return bResult;

};

m_tiff should still be valid on exit

I also have code to write the image data:

Which starts like:

bool CTIFFWriter::Write()

{

       ZFUNCTRACE_RUNTIME();

       bool         bResult = false;

       bool         bError = false;

 

       //

    // Multipliers of 256.0 and 65536.0 were not correct and resulted in a
fully saturated

       // pixel being written with a value of zero because the value
overflowed the data type 

       // which was being stored.   Change the code to use UCHAR_MAX and
USHRT_MAX

       //

 

       if (m_tiff)

       {

             tmsize_t            scanLineSize;

             tdata_t                   buff;

 

             scanLineSize = TIFFScanlineSize(m_tiff);

That works but ends up with the root IFD being written at the end of the
file what TIFFClose calls TIFFReWriteDirectory().

If I insert TIFFWriteDIrectory(m_tiff); immediately after the line that
reads TIFFSetField(m_tiff, TIFFTAG_EXIFID, dir_offset_EXIF);

 

then when I call into Write the value returned by TiffScanlinesSize() is
ZERO!

WHY is that and what can/should it do to fix this

 

Thanks, David 

 

_______________________________________________
Tiff mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/tiff

Reply via email to