2006.10.04 19:18 "[Tiff] 64-bit libtiff", by Dieter_Stüken

2006.10.04 19:18 "[Tiff] 64-bit libtiff", by Dieter_Stüken

I'm using libtiff (&libgeotff) since 10 years for a tool to merge and cut (geo-) tiff images. These days I tried to combine a really huge file with:

Image Width: 155729 Image Length: 161728 pixel.

As it is a FaxG4 compressed 1-bit layer with a compresson factor of 60 it is only about 48Mb. To get this layer into a map server I wanted to convert it into a tiled image. Unfortunately my binaries are still 32bit and run into problems to load the uncompressed image into memory. But since I recently got two AMD64 Linux machines with 8GB memory each, I recompiled all my tools as 64 bit executables. However I was a bit disappointed to find the same problem for 64 bit, too.

I tracked down the problem and found the reason was the definition of "tsize_t" which is still 32 bit, in contrast to size_t or void*, which become 64 bit. Thus I can't use TIFFmalloc(tsize_t) to handle memory >2G :-( So, even if the tiff file format itself is limited to 32 bit, there is no reason to limit the virtual image size, too. Indeed I simply tried to change "tsize_t" to 64 bit and it seems to work without problems so far! I did not test everything, but the binary tiff file layout seems not being affected by this.

Unfortunately this change makes my own tiff library incompatible to any binary distributions, and I have no idea, how to introduce this change without problems.