AWARE [SYSTEMS] Imaging expertise for the Delphi developer
AWare Systems, Imaging expertise for the Delphi developer, Home TIFF and LibTiff Mailing List Archive

LibTiff Mailing List

TIFF and LibTiff Mailing List Archive
September 2009

Previous Thread
Next Thread

Previous by Thread
Next by Thread

Previous by Date
Next by Date

Contact

The TIFF Mailing List Homepage
This list is run by Frank Warmerdam
Archive maintained by AWare Systems



Valid HTML 4.01!



Thread

2009.09.10 13:31 "Manually convert 16-bit grayscale image data to 8-bit grayscale in Borland c++", by Robert Zermeno
2009.09.10 13:51 "Re: Manually convert 16-bit grayscale image data to 8-bit grayscale in Borland c++", by Evgenia Gurova
2009.09.10 15:52 "Re: Manually convert 16-bit grayscale image data to 8-bit grayscale in Borland c++", by Bob Friesenhahn
2009.09.11 00:21 "Re: Manually convert 16-bit grayscale image data to 8-bit grayscale in Borland c++", by Robert Zermeno

2009.09.10 13:51 "Re: Manually convert 16-bit grayscale image data to 8-bit grayscale in Borland c++", by Evgenia Gurova

For 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