2002.08.30 20:05 "RE: Problem Reading MultiPage TIFFs", by Tore Bostrup
I'm definitely not the expert on TIFF's around here, but your description seems to indicate that your images deviate from the TIFF standard. Maybe if you could post an example image someone could be of help.
Sorry if this is a re-post, but I seem to have trouble getting mail through.
Thanks for the help on this, but I have run into another problem. It turns out that the images I am working with are not set up with multiple directories.
Instead there is a single directory and all the images are stored contiguously starting at the first StripOffset. So Strip #1 of the second image is stored directly after the last Strip of the first image. Using StripOffsets, StripsPerImage, and StripByteCounts I can find the offset for each additional image, but I am still having problems.
1st: How do I get LibTiff to read the images at these new offsets? I would think there would be a field in the TIFF struct that holds the offset to the image, but I can't acces it and without that I can't read any data past the last row of the first image. Is there a workaround for this? A seek function maybe?
2nd: I can't use the directory counting method to find out how many images are present in the file, since there is only one directory. The number is present in a couple of tags as the 'count' field. Is there a way to get at the count of a field (for data that is stored in arrays)?
3rd: I took at look at the TIFFClientOpen function hoping that it was the answer to my problems, but I don't understand it enough to get started. (You will see how new I am at this with these questions) Where does the thandle_t clientdata handle come from? Is it some value that I assign, arbitrary in nature, or should it be something that really means something (and what)? I would have to write a TIFFlseek function for the TIFFSeekProc callback, but I am not really sure where to get started with this. Could someone show me an example piece of code? Would I have to write callbacks for all the procs listed in the TIFFClientOpen call or would I be able to just pass NULLs to the ones I dont want to use? As you can see, I really am not sure where to get started, if somebody could show me an example program that uses the TIFFClientOpen it would help a lot.