| AWARE [SYSTEMS] | Imaging expertise for the Delphi developer | |||||||
![]() |
TIFF and LibTiff Mailing List Archive | |||||||
LibTiff Mailing List
TIFF and LibTiff Mailing List Archive Contact
The TIFF Mailing List Homepage |
Thread2008.01.14 06:32 "TIFFWriteScanline - write band orders", by Gis GeoHi 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.
---------------------------------
雅虎邮箱传递新年祝福,个性贺卡送亲朋!
|
|||||||