2010.05.11 16:02 "Re: [Tiff] Tiff with varying bit depths", by Thomas Richter
Frank Warmerdam schrieb:
I currently have a need to read and write TIFF files with a varying bit depth. To be specific, this is a BGR565 image packed into TIFF:
$ tiffdump out.tif
BitsPerSample (258) SHORT (3) 3<5 6 5>
Compression (259) SHORT (3) 1<1>
Photometric (262) SHORT (3) 1<2>
StripOffsets (273) LONG (4) 1<140>
SamplesPerPixel (277) SHORT (3) 1<3>
RowsPerStrip (278) LONG (4) 1<64>
StripByteCounts (279) LONG (4) 1<8192>
SampleFormat (339) SHORT (3) 1<1>
Obviously, the library does not support this, but what are my options if I need to read this file? I'm not too keen to write a tiff-parser myself, unless I really really have to - and - I afraid - I really really have to read this file in one way or another.
Is there a way to get at least hands on the raw stripe data without the lib falling over? Failing that, what is the patch acceptance policy for libTIFF? Would you accept a patch that adds support for this, probably in a limited way?
Have you investigated using TIFFReadRawTile() to read these tiles? At what point does libtiff fail with this file?
Do I misunderstand this? The file isn't tiled, but striped, thus why would TIFFReadRawTile() help?
Anyhow, I don't even get that far, the code already fails at TIFFOpen():
tfd = TIFFOpen(basename,"r");
if (tfd == NULL)
PostError("failed to open the TIFF file %s\n",basename); // <---
goes here immediately.
(From my code).
I don't anticipate the regular decompression/decoding logic working with such a file in the near future, but I would like to see it be possible to fetch the raw tile/strip data without too much difficulty.
That's what I would basically need. The file is uncompressed, i.e. the data is in a single stripe, bit-packed as five bits red, six bits green, five bits blue. I assume this is tiff-conforming, but please look into the file yourself.
Can you make one of these files available?
Certainly, please find it attached.
Note that this was created by a custom tiff writer. I *assume* its the proper way of creating such a tiff file, but I don't know. Would be great if you could look into this.