| 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 |
Thread2009.07.17 17:28 "Re: reading an 8 bit image", by Michael PersonsI just glanced at it and at first glance it appears that you would need to
increment the "ptr" variable by 4 and not by 3 since the image is a RGBA
image.
________________________________
From: tiff-bounces@lists.maptools.org
[mailto:tiff-bounces@lists.maptools.org] On Behalf Of Joe Tracy
Sent: Thursday, July 16, 2009 7:33 AM
To: tiff@lists.maptools.org
Subject: [Tiff] reading an 8 bit image
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
|
|||||||