AWARE [SYSTEMS] Imaging expertise for the Delphi developer
AWare Systems, Imaging expertise for the Delphi developer, Home TIFF and LibTiff Mailing List Archive

LibTiff Mailing List

TIFF and LibTiff Mailing List Archive
January 2008

Previous Thread
Next Thread

Previous by Thread
Next by Thread

Previous by Date
Next by Date

Contact

The TIFF Mailing List Homepage
This list is run by Frank Warmerdam
Archive maintained by AWare Systems



Valid HTML 4.01!



Thread

2008.01.14 06:32 "TIFFWriteScanline - write band orders", by Gis Geo
2008.01.14 07:25 "Re: TIFFWriteScanline - write band orders", by Rob Van Den Tillaart
2008.01.14 12:02 "=?gb2312?q?=BB=D8=B8=B4=A3=BA=20RE:=20[Tiff]=20TIFFWriteScanline=20-=20wr?= =?gb2312?q?ite=20band=20orders?=", by Gis Geo

2008.01.14 06:32 "TIFFWriteScanline - write band orders", by Gis Geo

Hi All,
   
  I am learning and testing TIFF Lib, and have experienced the following
  problem:
   
  I wish to write a 16-bit RGB imagery with separate planes, using the
  following codes
   
  ...
    TIFFSetField(out, TIFFTAG_IMAGEWIDTH, width);  
  TIFFSetField(out, TIFFTAG_IMAGELENGTH, height);
    TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, 16);
  TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, 3);
  TIFFSetField(out, TIFFTAG_PLANARCONFIG, 2);
  TIFFSetField(out, TIFFTAG_PHOTOMETRIC, 2);
  TIFFSetField(out, TIFFTAG_COMPRESSION, COMPRESSION_NONE); 
    TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(out, 1)); 
  
    for (j = 0; j < height; j++)
      {
    ...
      TIFFWriteScanline(out, buf_r, j, 0);
    TIFFWriteScanline(out, buf_g, j, 1);
    TIFFWriteScanline(out, buf_b, j, 2);
  } 
 
  The output is fine and works. I can verify that.
   
  But, after I have applied a 3*3 filter analysis, and I wish to output the
  same row-by-row data in this form, and the output tiff file is wrong:
   
     for (j = 1; j < height-1; j++)
   {
    ...
  
   if (j ==1 )
   {
    TIFFWriteScanline(out, buf_r, j-1, 0);
    TIFFWriteScanline(out, buf_g, j-1, 1);
    TIFFWriteScanline(out, buf_b, j-1, 2);
   }
   
      TIFFWriteScanline(out, buf_r, j, 0);
    TIFFWriteScanline(out, buf_g, j, 1);
    TIFFWriteScanline(out, buf_b, j, 2);
 
   if (j ==height-2 )
   {
    TIFFWriteScanline(out, buf_r, j+1, 0);
    TIFFWriteScanline(out, buf_g, j+1, 1);
    TIFFWriteScanline(out, buf_b, j+1, 2);
   }
    }
   
  I could not figure out why. This might to related to TIFFWriteScanline()
  and some expectation from the Tiff Lib that I did not specify.
   
  THANK you in advance.
   
   
  
 
   
   

       
---------------------------------
雅虎邮箱传递新年祝福,个性贺卡送亲朋!