| 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.09.10 13:51 "Re: Manually convert 16-bit grayscale image data to 8-bit grayscale in Borland c++", by Evgenia GurovaFor converting 16-bit TIFF images to 8-bit I successfully use ImageMagic: convert -depth 8 ifile ofile. The only option - ImageMagic "kills" geo-tag, so if you have geo-tiff, you need first write geo-tag to a txt file (with "listgeo") and after processing with ImageMagic - write it back (with "geotifcp"). I do it on Ubuntu Linux, works perfect! Robert Zermeno wrote: > Hi everyone, > > I have been using this website and mail archieve exclusively finding > answers to the questions I had recently. Thanks a bunch for your > knowledge. However, I am stuck with this issue i cannot find and > answer to because everyone is using the libtiff library to perform the > action. > > I am creating an application to manually read in the bits from the > file into memory to be displayed in Borland (I have to read certain > segment of a file given an offset and extract an (x,y) size sub-image > of an image. What I mean by manually, is I parse through the header > and footer myself using fseek() and fread(), and use the stripOffset > and StripByteCount to perform a fread() for each strip of image data. > > How on earth may I be able to convert my 16-bit grayscale image data > to 8-bit? I have been able to take 2 bytes to a short value, then > truncate it to a single byte like so: > > unsigned short value16 = *TmpBits++; > value16 = value16 + (*TmpBits++ << 8) > pBits[curPix++] = (value16/257. + .5) //convert value to double and > round up. > > where pBits is my BYTE array to hold image data and TmpBits is another > BYTE array of size StripByteCount. > > When I dislpay my data in Borland through a TImage object, I will > recieve my image (meaning, you can make out my object I am looking at, > but the gray values for each pixel is way off. Sometimes too much > white and some pixels are correct for black) but the gray coloration > is way off. I have to do this because in Borland, to create my > HBITMAP from a bmp object it must be in 1,4,8 or 24 bpp image. I then > pass this created HBITMAP to an TBitmap object and associate this > Bitmap to an TImage for display purposes. > > It works well with 8-bit images, but I cannot get the 16-bit data to > work. Here is my tag information to help out what my issue is: > > > NewSubfileType 254 LONG 1 0 > ImageWidth 256 LONG 1 14592 > ImageLength 257 LONG 1 6940 > BitsPerSample 258 SHORT 1 16 > Compression 259 SHORT 1 1 > PhotometricInterpretation 262 SHORT 1 1 > ImageDescription 270 ASCII 13 > Space Imaging > StripOffsets 273 LONG 6940 > 56040 85224 114408 143592... > SamplesPerPixel 277 SHORT 1 1 > RowsPerStrip 278 SHORT 1 1 > StripByteCounts 279 LONG 6940 > 29184 29184 29184 29184... > MinSampleValue 280 SHORT 1 0 > MaxSampleValue 281 SHORT 1 2047 > XResolution 282 RATIONAL 1 1/1 > YRresolution 283 RATIONAL 1 1/1 > ResolutionUnit 296 SHORT 1 1 > DateTime 306 ASCII 20 > 2001:01:11 18:50:28 > Copyright 33432 ASCII 24 > (c) Space Imaging LLC | > > It is a geotiff image, but that is irrelevent. Please help me > understand this issue. > Thanks in advance. > Robert > > > > ------------------------------------------------------------------------ > > _______________________________________________ > Tiff mailing list: Tiff@lists.maptools.org > http://lists.maptools.org/mailman/listinfo/tiff > http://www.remotesensing.org/libtiff/ -- **************************** Institute of Aerial Geodesy Applied Research Center Pramones pr.13, LT-51327 Kaunas, Lithuania tlf. +370 377 55226 fax. +370 374 51497 mob. +370 680 88688 |
|||||||