2009.07.16 14:33 "[Tiff] reading an 8 bit image", by Joe Tracy

2009.07.16 14:33 "[Tiff] reading an 8 bit image", by Joe Tracy

Hi,

I have been reading 16 bit grayscale tiff images for a while now using
the ReadScanLine method: this works fine.

However, I am unable to figure out how to read in an 8 bit image. I
have tried many variations, but the closest I come is this:

(I am just putting the pixel data into an array, then subsequently
create an image later. Using this method, my image is not correct.)

I am using C#.Net, using DLLImports for the libtiff calls.

TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, ref w);

TIFFGetField(tif, TIFFTAG_IMAGELENGTH, ref h);

TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, ref bits);

TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, ref samples);

pixel_array = new int[h, w, 3];

                            UInt32 size = h * w;

                            byte* raster = _TIFFmalloc((UInt32)(size *
sizeof(UInt32)));

                            int val = TIFFReadRGBAImage(tif, w, h,
(byte*)raster, 0);

                            if (val != 0)

                            {

                                for (int j = 0; j < h; j++)

                                {

                                    for (int i = 0, ptr = 0; i < w; i++,
ptr += 3)

                                    {

                                        pixel_array[j, i, 0] =
(int)raster[ptr + j * w];

                                        pixel_array[j, i, 1] =
(int)raster[ptr + 1 + j * w];

                                        pixel_array[j, i, 2] =
(int)raster[ptr + 2 + j * w];

                                    }

                                }

                            }

                            _TIFFfree((byte*)raster);

My image comes in "garbled". It is close, but not there.

Any help is appreciated.

Thanks,

Joe