Discussion:
BMP export
Shinobu Maehara
2010-04-04 15:59:09 UTC
Permalink
According to identify -list format, the BMP:, BMP2: and BMP3: prefixes are:
BMP* BMP rw- Microsoft Windows bitmap image
BMP2* BMP -w- Microsoft Windows bitmap image v2
BMP3* BMP -w- Microsoft Windows bitmap image v3

I have tested these, and I found that what acutally happend was:
BMP: --> Windows BMP version 5
BMP3: --> Windows BMP version 3
BMP2: --> OS/2 BMP version 1
OS/2 BMP version 2 and Windows BMP version 4 cannot be generated.

I think the prefixes should be:
BMP1: --> Windows v1, which was also used as OS/2 v1
BMP2: --> OS/2 v2
BMP3: --> Windows v3
BMP4: --> Windows v4
BMP5: --> Windows v5
BMP: --> whatever the latest version is
The descriptors of the prefixes should be clarified. Perhaps, if this can be made to fit in the available 52 characters, the header sizes and colour table entry widths (3 or 4) should be stated explicitly.
And there is yet another format, used for the XP bootlogo. Although superficially similar to the others, the NT loader ignores many fields but is very picky about the others. As a rule, using a BMP generated by ImageMagick means the system won't boot. I haven't quite figured out what the rules are yet. I propose to add, say, a BMPXPB: prefix that will automatically force the image to 4bpp (contrary to other reports, it doesn't need to be 640x480; if it isn't it gets displayed in the top left corner and padded with colour index 0) and take care that nothing else is set wrongly, as soon as we know what the rules exactly are. I've made some headway finding this out.

As a last remark, the version numbers are, except for 4 and 5, in a sense unofficial.
v1 must be version 1 because when it was introduced in Win 2.0 and OS/2 it was the first version of this file format, before that there were only DDBs. We see that Windows skipped a version somewhere; I think that is because the v4 and v5 actually originated from the NT kernel version, and perhaps to retroactively create some version order where first there was none. Given NT's OS/2 heritage, it does make sense, kind of.
Loading...