2001.06.15 03:49 "Image manipulation package based on libtiff?", by Pak Yan Choi

2001.06.15 11:53 "Re: Image manipulation package based on libtiff?", by Frank Warmerdam

I'm beginning work on a summer project to implement an image manipulation package based on libtiff. We need to be able to have pixel, scanline, and block access to large (> 0.5GB) images, usually several at a time. We also need to be able to read, write, and modify (read AND write) an image. Regarding image access, libtiff provides some helpful functions (such as the RGBA interface), but it doesn't seem well-suited for use in manipulation. For example, it appears that I'll want/need to implement some sort of image paging mechanism, and I'll need to modify the library to support the ability to modify an image.

Has anyone else used libtiff in this manner and, if so, would you be willing to share advice (maybe even code)? Are there packages for other image formats that I should consider as the basis for my project? Any suggestions and/or pointers would be gratefully received.


It is currently possible to open TIFF files with update access using libtiff and update existing strips and tiles (using TIFFWriteEncodedStrip() / TIFFWriteEncodedTile()) as long as the file is uncompressed. So some degree of update support does already exist. However, you can't update through the RGBA interfaces, nor the scanline interface.

In general, if library size isn't a big issue, I would encourge you to build on a more general image access library that decouples you from some of the peculiariets of libtiff, and provides for more file formats.

I maintain the GDAL library (http://www.remotesensing.org/gdal) that is suitable for accessing large images efficiently with some caveats (targettsd at 8bit+ data, and scientfic/remote sensing data).

Good luck,

I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam@pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent