AWARE SYSTEMS
TIFF and LibTiff Mail List Archive

Thread

2006.05.25 17:24 "[Tiff] libtiff writes zero valued tile offsets and byte counts", by Thomas Sharpless
2006.05.30 08:42 "Re: [Tiff] libtiff writes zero valued tile offsets and byte counts", by Gerben Vos
2006.05.30 18:04 "Re: [Tiff] libtiff writes zero valued tile offsets and byte counts", by Chris Cox
2006.06.01 03:42 "Re: [Tiff] libtiff writes zero valued tile offsets and byte counts", by Joris
2006.06.01 04:09 "Re: [Tiff] libtiff writes zero valued tile offsets and byte counts", by Chris Cox
2006.06.08 22:27 "RE: [Tiff] libtiff writes zero valued tile offsets and byte counts", by Mark R. Olin
2006.06.08 18:44 "Re: [Tiff] libtiff writes zero valued tile offsets and byte counts", by Frank Warmerdam
2006.06.08 23:22 "Re: [Tiff] libtiff writes zero valued tile offsets and byte counts", by Joris

2006.05.25 17:24 "[Tiff] libtiff writes zero valued tile offsets and byte counts", by Thomas Sharpless

My scanning camera app writes tiled tiff images using libtiff under Win32. The images

are readable by PhotoShop (6.01) but not by PaintShop Pro 7 or libtiff itself. The problem

seems to be that all the tile offsets and bytecounts in the file are zero (their number is

correct). Can anyone tell me why?

I creates the file thus:
    ptiff = TIFFOpen(OPFileName, "w");
    if( ptiff ) {

      TIFFSetField( ptiff, TIFFTAG_IMAGEWIDTH, pSC->img_cols );
      TIFFSetField( ptiff, TIFFTAG_IMAGELENGTH, pSC->img_rows );
      TIFFSetField( ptiff, TIFFTAG_COMPRESSION, 1 ); // uncompressed
      TIFFSetField( ptiff, TIFFTAG_PLANARCONFIG, 1 ); // contiguous
      TIFFSetField( ptiff, TIFFTAG_SAMPLESPERPIXEL, pSC->scn_cpp );

      if( pSC->scn_cpp == 1){   // greyscale

        TIFFSetField( ptiff, TIFFTAG_BITSPERSAMPLE, 8 * pSC->img_bpc );
        TIFFSetField( ptiff, TIFFTAG_PHOTOMETRIC, 1 ); // 0 is black
      } else { // RGB
        int n = 8 * pSC->img_bpc;
        TIFFSetField( ptiff, TIFFTAG_BITSPERSAMPLE, n, n, n );
        TIFFSetField( ptiff, TIFFTAG_PHOTOMETRIC, 2 ); // RGB
      }
    // tile size
      TIFFSetField( ptiff, TIFFTAG_TILELENGTH, pTB->getHgt() );
      TIFFSetField( ptiff, TIFFTAG_TILEWIDTH, pTB->getWid() );
    // verify
      if (!TIFFCheckTile(ptiff, 0,0,0,0)) fail();

write each tile thus:
     if( TIFFWriteTile( ptiff, pdata, imgx, imgy, 0, 0 ) < 1 ) fail();

and call TIFFclose( ptiff ) at the end.