AWARE [SYSTEMS] Imaging expertise for the Delphi developer
AWare Systems, Imaging expertise for the Delphi developer, Home TIFF and LibTiff Mailing List Archive

LibTiff Mailing List

TIFF and LibTiff Mailing List Archive
March 2010

Previous Thread
Next Thread

Previous by Thread
Next by Thread

Previous by Date
Next by Date

Contact

The TIFF Mailing List Homepage
This list is run by Frank Warmerdam
Archive maintained by AWare Systems



Valid HTML 4.01!



Thread

2010.03.16 19:45 "TIFFVStripSize overflow, JPEG decoding", by Lee Cooper
2010.03.16 21:08 "Re: TIFFVStripSize overflow, JPEG decoding", by Bob Friesenhahn
2010.03.17 20:19 "Re: TIFFVStripSize overflow, JPEG decoding", by Adam Goode
2010.03.17 21:36 "Re: TIFFVStripSize overflow, JPEG decoding", by Tom Lane
2010.03.18 00:11 "Re: TIFFVStripSize overflow, JPEG decoding", by Adam Goode
2010.03.16 22:34 "Re: TIFFVStripSize overflow, JPEG decoding", by Lee Cooper
2010.03.17 16:42 "Re: TIFFVStripSize overflow, JPEG decoding", by Jason Summers
2010.03.17 20:18 "Re: TIFFVStripSize overflow, JPEG decoding", by Adam Goode
2010.03.17 20:59 "Re: TIFFVStripSize overflow, JPEG decoding", by Lee Cooper
2010.03.18 00:15 "Re: TIFFVStripSize overflow, JPEG decoding", by Adam Goode
2010.03.18 02:40 "Re: TIFFVStripSize overflow, JPEG decoding", by Olivier Paquet
2010.03.19 15:52 "Re: TIFFVStripSize overflow, JPEG decoding", by Adam Goode
2010.03.19 16:39 "Re: TIFFVStripSize overflow, JPEG decoding", by Bob Friesenhahn
2010.03.19 18:18 "Re: TIFFVStripSize overflow, JPEG decoding", by Adam Goode
2010.03.19 23:43 "Re: TIFFVStripSize overflow, JPEG decoding", by Bob Friesenhahn

2010.03.16 19:45 "TIFFVStripSize overflow, JPEG decoding", by Lee Cooper

I am trying to develop software to support a new tiff file source of large
medical images.  Using libtiff I am encountering problems with TIFFOpen, I
suspect because the dimensions are causing overflow of 32-bit variables
(image dimensions in the tens-of-thousands).

I am aware of the bigtiff project but that is not an option in this case
since I don't have control over how the files are generated.  Since I only
have to support a very limited format (file organization is always the
same), I am hoping to generate some simple specific code that uses header
information to read the image contents.  The files contain multiple "pages",
each encoded with JPEG.  I have listed a sample tiffdump output below.

If I have the offset from the header, is there a way to decode the output
without using TIFFOpen directly?  I don't mind writing some software but
would prefer not to decode the JPEG from scratch :)

Regards,
Lee

-----------------------------------------------------------------------------------
Magic: 0x4949 <little-endian> Version: 0x2a
Directory 0: offset 184062235 (0xaf8911b) next 197055203 (0xbbed2e3)
ImageWidth (256) LONG (4) 1<51200>
ImageLength (257) LONG (4) 1<38144>
BitsPerSample (258) SHORT (3) 3<8 8 8>
SamplesPerPixel (277) SHORT (3) 1<3>
RowsPerStrip (278) LONG (4) 1<38144>
Compression (259) SHORT (3) 1<7>
Photometric (262) SHORT (3) 1<6>
Make (271) ASCII (2) 10<Hamamatsu\0>
Model (272) ASCII (2) 11<NanoZoomer\0>
XResolution (282) RATIONAL (5) 1<21910>
YResolution (283) RATIONAL (5) 1<21975>
ResolutionUnit (296) SHORT (3) 1<3>
Software (305) ASCII (2) 9<NDP.scan\0>
DateTime (306) ASCII (2) 20<2009:12:31 09:11:46\0>
YCbCrSubsampling (530) SHORT (3) 2<1 1>
ReferenceBlackWhite (532) LONG (4) 6<0 255 128 255 128 255>
65420 (0xff8c) SHORT (3) 1<1>
65421 (0xff8d) FLOAT (11) 1<20>
65422 (0xff8e) SLONG (9) 1<4876667>
65423 (0xff8f) SLONG (9) 1<4292627296>
65424 (0xff90) SLONG (9) 1<0>
65425 (0xff91) LONG (4) 1<0>
StripOffsets (273) LONG (4) 1<108>
StripByteCounts (279) LONG (4) 1<183585327>
65426 (0xff92) LONG (4) 119200<660 1344 2086 2840 3471 4158 4868 5518 6152
6802 7432 8106 8760 9417 10060 10703 11347 11979 12616 13258 13882 14519
15170 15798 ...>
65428 (0xff94) LONG (4) 1<3916405674>

Directory 1: offset 197055203 (0xbbed2e3) next 197918647 (0xbcbffb7)
ImageWidth (256) LONG (4) 1<12800>
ImageLength (257) LONG (4) 1<9536>
BitsPerSample (258) SHORT (3) 3<8 8 8>
SamplesPerPixel (277) SHORT (3) 1<3>
RowsPerStrip (278) LONG (4) 1<9536>
Compression (259) SHORT (3) 1<7>
Photometric (262) SHORT (3) 1<6>
Make (271) ASCII (2) 10<Hamamatsu\0>
Model (272) ASCII (2) 11<NanoZoomer\0>
XResolution (282) RATIONAL (5) 1<5477>
YResolution (283) RATIONAL (5) 1<5493>
ResolutionUnit (296) SHORT (3) 1<3>
Software (305) ASCII (2) 9<NDP.scan\0>
DateTime (306) ASCII (2) 20<2009:12:31 09:11:46\0>
YCbCrSubsampling (530) SHORT (3) 2<1 1>
ReferenceBlackWhite (532) LONG (4) 6<0 255 128 255 128 255>
65420 (0xff8c) SHORT (3) 1<1>
65421 (0xff8d) FLOAT (11) 1<5>
65422 (0xff8e) SLONG (9) 1<4876667>
65423 (0xff8f) SLONG (9) 1<4292627296>
65424 (0xff90) SLONG (9) 1<0>
65425 (0xff91) LONG (4) 1<0>
StripOffsets (273) LONG (4) 1<184062757>
StripByteCounts (279) LONG (4) 1<12873246>
65426 (0xff92) LONG (4) 29800<660 825 997 1171 1306 1493 1669 1813 1951 2083
2215 2367 2529 2666 2800 2935 3073 3207 3347 3481 3619 3763 3910 4040 ...>
65428 (0xff94) LONG (4) 1<4063277570>

Directory 2: offset 197918647 (0xbcbffb7) next 197972969 (0xbccd3e9)
ImageWidth (256) LONG (4) 1<3200>
ImageLength (257) LONG (4) 1<2384>
BitsPerSample (258) SHORT (3) 3<8 8 8>
SamplesPerPixel (277) SHORT (3) 1<3>
RowsPerStrip (278) LONG (4) 1<2384>
Compression (259) SHORT (3) 1<7>
Photometric (262) SHORT (3) 1<6>
Make (271) ASCII (2) 10<Hamamatsu\0>
Model (272) ASCII (2) 11<NanoZoomer\0>
XResolution (282) RATIONAL (5) 1<1369>
YResolution (283) RATIONAL (5) 1<1373>
ResolutionUnit (296) SHORT (3) 1<3>
Software (305) ASCII (2) 9<NDP.scan\0>
DateTime (306) ASCII (2) 20<2009:12:31 09:11:46\0>
YCbCrSubsampling (530) SHORT (3) 2<1 1>
ReferenceBlackWhite (532) LONG (4) 6<0 255 128 255 128 255>
65420 (0xff8c) SHORT (3) 1<1>
65421 (0xff8d) FLOAT (11) 1<1.25>
65422 (0xff8e) SLONG (9) 1<4876667>
65423 (0xff8f) SLONG (9) 1<4292627296>
65424 (0xff90) SLONG (9) 1<0>
65425 (0xff91) LONG (4) 1<0>
StripOffsets (273) LONG (4) 1<197055725>
StripByteCounts (279) LONG (4) 1<833122>
65426 (0xff92) LONG (4) 7450<660 717 772 829 870 933 984 1028 1068 1107 1145
1191 1280 1320 1358 1397 1438 1476 1515 1556 1595 1637 1687 1725 ...>
65428 (0xff94) LONG (4) 1<451833854>

Directory 3: offset 197972969 (0xbccd3e9) next 198030603 (0xbcdb50b)
ImageWidth (256) LONG (4) 1<800>
ImageLength (257) LONG (4) 1<596>
BitsPerSample (258) SHORT (3) 3<8 8 8>
SamplesPerPixel (277) SHORT (3) 1<3>
RowsPerStrip (278) LONG (4) 1<596>
Compression (259) SHORT (3) 1<7>
Photometric (262) SHORT (3) 1<6>
Make (271) ASCII (2) 10<Hamamatsu\0>
Model (272) ASCII (2) 11<NanoZoomer\0>
XResolution (282) RATIONAL (5) 1<342>
YResolution (283) RATIONAL (5) 1<343>
ResolutionUnit (296) SHORT (3) 1<3>
Software (305) ASCII (2) 9<NDP.scan\0>
DateTime (306) ASCII (2) 20<2009:12:31 09:11:46\0>
YCbCrSubsampling (530) SHORT (3) 2<1 1>
ReferenceBlackWhite (532) LONG (4) 6<0 255 128 255 128 255>
65420 (0xff8c) SHORT (3) 1<1>
65421 (0xff8d) FLOAT (11) 1<0.3125>
65422 (0xff8e) SLONG (9) 1<4876667>
65423 (0xff8f) SLONG (9) 1<4292627296>
65424 (0xff90) SLONG (9) 1<0>
65425 (0xff91) LONG (4) 1<0>
StripOffsets (273) LONG (4) 1<197919169>
StripByteCounts (279) LONG (4) 1<53800>

Directory 4: offset 198030603 (0xbcdb50b) next 0 (0)
ImageWidth (256) LONG (4) 1<1191>
ImageLength (257) LONG (4) 1<408>
BitsPerSample (258) SHORT (3) 3<8 8 8>
SamplesPerPixel (277) SHORT (3) 1<3>
RowsPerStrip (278) LONG (4) 1<408>
Compression (259) SHORT (3) 1<7>
Photometric (262) SHORT (3) 1<6>
Make (271) ASCII (2) 10<Hamamatsu\0>
Model (272) ASCII (2) 11<NanoZoomer\0>
XResolution (282) RATIONAL (5) 1<156>
YResolution (283) RATIONAL (5) 1<156>
ResolutionUnit (296) SHORT (3) 1<3>
Software (305) ASCII (2) 9<NDP.scan\0>
DateTime (306) ASCII (2) 20<2009:12:31 09:11:46\0>
YCbCrSubsampling (530) SHORT (3) 2<1 1>
ReferenceBlackWhite (532) LONG (4) 6<0 255 128 255 128 255>
65420 (0xff8c) SHORT (3) 1<1>
65421 (0xff8d) FLOAT (11) 1<-1>
65422 (0xff8e) SLONG (9) 1<0>
65423 (0xff8f) SLONG (9) 1<0>
StripOffsets (273) LONG (4) 1<197973459>
StripByteCounts (279) LONG (4) 1<57144>