AWARE SYSTEMS
TIFF and LibTiff Mail List Archive

2000.08.16 13:42 "Raster information in a tiff file", by

Hi!

My problem is to write information from a raster (8 bits grayscale no header) to a tiff file.

 I don't know how and i can't explain why it does not work.

1) the buffer is limited to 8kb???

2) the method to emulate tdata_t is not right, it is possible with TIFFWriteBufferSetup?

Thanx!

void Ecrire_Image(TIFF *tif, uint8 *buffer)
{

/*

----------------------------------------------------------------------------
----------
  local
 
----------------------------------------------------------------------------

----------
*/
  char ch; /* pixel information grayscale 8 bit
from the raster */

  uint32  compteur = 0;               /* for count */

  FILE    *flecture = NULL;          /* ratser file contain only 8 bit pixel

no header */

  uint32  max = 891374;             /* number of pixel flecture contain =>

687 (lenght) * 1307 (width) */

   if ( (flecture = fopen("decoupage1.raw","rb")) == NULL)
        {
                        fprintf(stderr, "ERROR opening file.\n");
                        exit(1);
                }

/*

----------------------------------------------------------------------------
------------
  try to emulate tdata_t of the TIFFWriteScanline function with buffer
 
----------------------------------------------------------------------------

------------
*/
   buffer = (uint8*) _TIFFmalloc (max);
 /*

----------------------------------------------------------------------------
------------
  read the raster and construct the buffer information for storage
 
----------------------------------------------------------------------------

------------
*/

   for ( compteur =0; compteur < max; compteur ++)
        {
                        ch = fgetc(flecture);
                        buffer[compteur] = (uint8) ch ;
        }
/*

----------------------------------------------------------------------------
----------
  now the problem => memory fault core dump TIFFWriteScanline
 
----------------------------------------------------------------------------

----------
*/
   if (!TIFFWriteScanline(tif, buffer, compteur, 0))
        {
                        TIFFError("WriteImage","failure in
WriteScanline\n");
        }

   free (buffer);
   fclose(flecture);
}