2011.06.30 15:21 "[Tiff] Is it possible to read a large tiff image in portions?", by Hib Eris

2011.06.30 16:02 "Re: [Tiff] Is it possible to read a large tiff image in portions?", by David Burken

Hib,

On 06/30/2011 11:21 AM, Hib Eris wrote:

I am trying to handle large tiff files using libtiff, for example, an image of size 13244 x 18724 pixels.

When I use

int TIFFReadRGBAImage(TIFF *tif, u_long width, u_long height, u_long *raster, int stopOnError), then the "raster" must be 13244 x 18724 x 4 = 991922624 bytes. That is almost 1 GB and that is too much for my computer.

To avoid this, I would like to read and process the image in pieces, how should I do this with libtiff?

I noticed

int TIFFReadRGBATile(TIFF *tif, uint32 x, uint32 y, uint32 *raster), but that seems to only work for tile-based tiff images. I would like to have a solution for all tiff images, not only tile-based ones.

I'll point you to an example. Ossim is tile based under the hood. So all of our image readers have one purpose, to stuff a tile of image data like 256x256. Since tiff can be many flavors I'd start at ossimTiffTileSource::getTile as it takes multiple paths.

http://trac.osgeo.org/ossim/browser/trunk/ossim/src/ossim/imaging/ossimTiffTileSource.cpp

Hope that helps.

Another option of course would be to link with ossim, open your image and call getTile for the rectangle you want.

Hope that helps,

Dave