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
January 2004

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

2004.01.14 12:01 "COLORMAP and byte padding", by Stephan Assmus
2004.01.14 15:07 "Re: COLORMAP and byte padding", by Frank Warmerdam
2004.01.14 16:18 "Re: COLORMAP and byte padding", by Gerben Vos
2004.01.14 16:43 "Re: COLORMAP and byte padding", by Joris Van Damme
2004.01.14 17:13 "Re: COLORMAP and byte padding", by Gerben Vos
2004.01.14 17:17 "Re: COLORMAP and byte padding", by Joris Van Damme
2004.01.14 17:26 "Re: COLORMAP and byte padding", by Andy Cave
2004.01.14 17:36 "Re: COLORMAP and byte padding", by Joris Van Damme
2004.01.14 17:24 "Re: COLORMAP and byte padding", by Phillip Crews
2004.01.14 18:18 "Re: COLORMAP and byte padding", by Marti Maria
2004.01.14 19:02 "Re: COLORMAP and byte padding", by Andy Cave
2004.01.14 19:36 "Re: COLORMAP and byte padding", by Marti Maria
2004.01.14 19:48 "Re: COLORMAP and byte padding", by Andy Cave
2004.01.15 17:24 "Re: COLORMAP and byte padding", by Marti Maria
2004.01.15 17:37 "Re: COLORMAP and byte padding", by Andy Cave
2004.01.15 00:05 "Re: COLORMAP and byte padding", by Chris Cox

2004.01.14 16:43 "Re: COLORMAP and byte padding", by Joris Van Damme

> For the perfectionists who are wondering: multiplying by 257 works
> perfectly.

Agreed on the multiplying by 257. I dissagree on the 'for the
perfectionists' part, though, because multiplying by 257 is simply the only
correct thing to do and that's all there is to it.

The general rule if 0 maps to 0: divide by the max in the scale you're
leaving, and multiply by the max in the scale you're entering. Thus, going
from 8bit to 16bit becomes:

uint16val = uint8val/255*65535
              = uint8val*257
              = uint8val*256+uint8val*1
              = ((uint8val << 8) | uint8val)

Going from 16bit to 8bit becomes:

uint8val = uint16val/65535*255
             = uint16val/257

Are you sure that boils down to >>8? I'd have to check...


Joris Van Damme
info@awaresystems.be
http://www.awaresystems.be