Link to home
Start Free TrialLog in
Avatar of afzalj
afzalj

asked on

Fast Bitmap Conversion

Experts,
I need a fast, reliable way of converting a 24-bit bitmap created by BitBlt() into a 8-bit grey-scale bitmap. If I try to use BitBlt() and capture an 8-bit image on a 24-bit screen, the image captured is *rubbish*. So I capture in 24-bit and I want to convert this image into 8-bit greyscale (pref. using the same type of RGB palette each time i.e. 0=white, 255=black, all numbers in between shades of grey). Code would be appreciated (c pref.) Thanx a lot,
Afzal.
ASKER CERTIFIED SOLUTION
Avatar of chensu
chensu
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
If you just want RGB to grayscale, do this for each pixel:

  Y = 0.299*R + 0.587*G + 0.114*B

This way of calculating grayscale from RGB is used by TVs. In case you're wondering, color TV signal has a black-and-white channel and two other color channels, this way B&W TV sets can display color TV signals (only the black-and-white channel).