Generic use of TIFFSetField

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Generic use of TIFFSetField

Paavo Helde

I'm now in a fresh attempt to use LibTIFF for TIFF file writing, mainly
because I do not want to tweak with BigTIFF bit twiddling and create new
obscure bugs. My task is to interface a scripting language layer, it
sends in a table with TIFF tags and data and I need to produce a
compliant TIFF file. Some tags like image width and bit depth I can set
easily, based on the properties of the incoming image, but the script
layer can send in also any other tags. In the previous "manual"
implementation it was easy, if the script sent in e.g. a 3-element
vector of int16 type for a tag, then I created a corresponding TIFF IFD
entry and stored the info there. However, in LibTIFF I do not find such
a function, there is TIFFSetField() which takes ellipsis arguments, but
as far as I can see there is no way to tell it that I am sending a
3-element array of int16, for example.

OK, I tried to do this in a harder way. I found the functions
TIFFFieldWithTag(), TIFFFieldDataType() and TIFFFieldWriteCount() which
ought to tell me the expected type and count of the data to be passed
into the ellipsis. But it appears it's not so simple, for example for
other hand, the TIFFSetField() man page says that for
TIFFTAG_SMAXSAMPLEVALUE I have to pass a single double. How do I
translate TIFF_ANY and TIFF_VARIABLE into a single double? And what if I
want to follow the TIFF standard and store N=SamplesPerPixel values
instead of a single value?

Should I just copy the TIFFSetField man page and make a huge switch
statement from it?


Tiff mailing list: [hidden email]