2004.04.22 06:15 "Large Tiff and roadsigns", by Rob van den Tillaart

2004.04.22 06:15 "Large Tiff and roadsigns", by Rob van den Tillaart


Yesterday when I drove home from work I was triggered bij a roadsign indicating the distance to the next cities. Every few kilometers there was a new roadsign. Suddenly I was aware that these are pointers or offsets. These pointers reference to a location with respect to the current location. Some pointed forward others backward (other side of the road :) and some pointed sideward.

What could this mean for large TIFF files?

Currently all offsets in a TIFF file are relative to the start of the file. If we just change this with offsets relative to the current position it is possible to handle multipage tiff files of arbitrary size (individual images smaller than 2GB). The type of offset could be 32 bit signed int an existing type. The only thing needed to do is an indication that offsets are relative iso absolute.

header >IFD ->  IFD ->  IFD ->  IFD ->  IFD->   IFD ->  IFD ->  IFD ->  IFD
0GB     1GB     2GB     3GB     4 GB    5GB     6GB     7GB     8GB     9GB

(GB= gigabyte absolute offset from start of file)

In this oversimplified example the offset to the next IFD is just 1 GB away.

However if the images themselves are larger than 2GB the pointers to the next IFD are not long enough and there is still a need for a 64 bit offset type.

The use of signed int's is chosen as the IFD is often after the image data.

This relative offset concept certainly has drawbacks I overlook right now, but it has some nice properties too so lets add it to the discussion.

rob tillaart