Ahhhh!!!! Here's where we take off the gloves & go Mano a Mano ;-) You bring
out the "purist" in me
Bring it, bring it. But fair warning, you're talking to a boy who's written
code that writes BMP files on the fly. I've cut 'em open and played with
their intestines. (And aren't we glad THAT'S a bitmap and not a full RGB
image). Below ...
<snip>
But they're as able to deliver quality images as any other
format that can store 24-bit pixel data
<snip>
If it's 24-bit it *ain't* a BMP [no matter what type of extension some
developer may have stuck on it]. By definition, BMP has a single 1-bit
channel which displays each pixel as either Black (0 brightness) or White
(255 brightness). This evolved to allow for any two shades to be substituted
for B & W once color was supported on the PC. Anything with a greater pixel
depth (8-bit, 16-bit, 24-bit, 32-bit) can be a *Raster* image, but by
definition it isn't a BMP. The term "bitmap" [or "bitmapped"] image gets
bandied about & interchanged with "raster" far too cavalierly [IMHO] &
applied to literally *any* image file which isn't clearly Vector. That's a
part of what leads to the confusion of many users.
Some schnook at MS confused "bitmap" with "raster" too. He's got a lot of
company. But don't assume that because he misnamed it, the file contents
follow him into The Valley of Errata.
BMPs can be 1-bit, 4-bit, 8-bit color or b/w, or full 24-bit color.
From the MS Spec (and on the count of three, we can snicker it the insistence
on referring to the image as a bitmap, whether it is or not):
The biBitCount member of the BITMAPINFOHEADER structure determines the number
of bits that define each pixel and the maximum number of colors in the
bitmap. These members can have any of the following values:
Value Meaning
1 Bitmap is monochrome and the color table contains two entries. Each
bit in the bitmap array represents a pixel. If the bit is clear, the pixel is
displayed with the color of the first entry in the color table. If the bit is
set, the pixel has the color of the second entry in the table.
4 Bitmap has a maximum of 16 colors. Each pixel in the bitmap is
represented by a 4-bit index into the color table. For example, if the first
byte in the bitmap is 0x1F, the byte represents two pixels. The first pixel
contains the color in the second table entry, and the second pixel contains
the color in the sixteenth table entry.
8 Bitmap has a maximum of 256 colors. Each pixel in the bitmap is
represented by a 1-byte index into the color table. For example, if the first
byte in the bitmap is 0x1F, the first pixel has the color of the
thirty-second table entry.
24 Bitmap has a maximum of 2^24 colors. The bmiColors (or bmciColors)
member is NULL, and each 3-byte sequence in the bitmap array represents the
relative intensities of red, green, and blue, respectively, for a pixel.