| 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 |
Thread2005.12.12 22:58 "Re: how about the pixel order if I use TIFFReadScanline?", by Bob Friesenhahn> I try to use the TIFFReadScanline to read the TIFF image. What I did is:
>
> 1) use the TIFFScanline for read the image row by row
> for (row = 0; row < height; row++){
> result = TIFFReadScanline(tif, scanline, row,0); }
And this does??? Does it just overwrite the existing scanline buffer
content with the content of the next scanline?
> 2) later on, put each line to a whole buffer RGB:
> for (i=0;i<width;i++){
>
> *(RGB+row*width*3+i*3)=*(scanline+i*3);
> *(RGB+row*width*3+i*3+1)=*(scanline+i*3+1);
> *(RGB+row*width*3+i*3+2)=*(scanline+i*3+2);}}
This seems very complicated. TIFF scanlines are packed and (for an
RGB image) are in RGB order. If the data is 8 or 16-bit, then it is
reasonably easy to access as a char array or array of short, but
otherwise you need to do whatever bit-unstuffing is necessary to
obtain the samples. 16, 24, and 32-bit samples will be converted (by
libtiff) to the native endian order. The unpacking can be challenging
to implement, it usually makes sense to immediately convert the
samples into your preferred internal representation rather than buffer
them up and do the conversion later.
Also, rather than doing all the math, you might find it easier (and
faster) to use pointers and increment the pointer positions.
> But when I open the RGB buffer pixel by pixel, it seems that it is not the
> original image( I mean top to bottom, left to right). I think that I must
> misunderstand the pixel order of the TIFFScanline, but I have no idea about
Pixel order is indeed top to bottom, left to right, although the final
page orientation (indicated by a tag) may differ from that.
Bob
======================================
Bob Friesenhahn
bfriesen@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer, http://www.GraphicsMagick.org/
|
|||||||