BMP
Line 3: | Line 3: | ||
|subcat=Graphics | |subcat=Graphics | ||
|extensions={{ext|bmp}}<br>{{ext|dib}}<br>{{ext|rle}} | |extensions={{ext|bmp}}<br>{{ext|dib}}<br>{{ext|rle}} | ||
+ | |locfdd={{LoCFDD|fdd000189}} | ||
|pronom={{PRONOM|fmt/116}}, others | |pronom={{PRONOM|fmt/116}}, others | ||
}} | }} | ||
== Overview == | == Overview == | ||
− | '''BMP''' is a family of | + | '''BMP''' is a family of raster graphics image file formats designed to store bitmap digital images independently of a display device. BMP was originally and is primarily used on Microsoft Windows and OS/2 operating systems. The format is sometimes known as Device-Independent Bitmap (DIB), since, when loaded into memory using Windows software, the image is held as a DIB structure. |
+ | |||
+ | Though seemingly a simple format, it is complicated by its many different versions, lack of an official specification, lack of any version control process, and ambiguities and contradictions in the documentation. | ||
+ | |||
+ | Images are usually uncompressed, but [[Run-length encoding|RLE]] compression can be used under some conditions. The rare OS/2 2.0 format also supports Huffman 1D compression. | ||
== Identification == | == Identification == | ||
Line 17: | Line 22: | ||
== Well-known versions == | == Well-known versions == | ||
− | + | BMP files use a common 14-byte file header, named BITMAPFILEHEADER. Following that is the "Info header", which begins with a 4-byte integer indicating its size. The Info header size (mostly) reveals the version of BMP that the file uses. | |
=== Windows BMP v2 === | === Windows BMP v2 === | ||
Line 25: | Line 30: | ||
Also known as OS/2 BMP 1.0. | Also known as OS/2 BMP 1.0. | ||
+ | |||
+ | Some sources say that the height and width fields in Windows BMP v2 are signed (which would make the Windows v2 and OS/2 1.0 formats slightly different), but modern documentation says they are unsigned. | ||
=== Windows BMP v3 === | === Windows BMP v3 === | ||
Line 35: | Line 42: | ||
Windows CE also extended it, for example to allow 2 bits/pixel, but its extensions were not migrated to the BMP v4 and v5 formats. | Windows CE also extended it, for example to allow 2 bits/pixel, but its extensions were not migrated to the BMP v4 and v5 formats. | ||
− | + | It is apparently possible for OS/2 2.0 format to masquerade as Windows v3. The upshot is that if the compression type is 3 and the bit depth is 1, or the compression type is 4 and the bit depth is 24, then the file should be treated as OS/2 BMP 2.0. | |
=== Windows BMP v4 === | === Windows BMP v4 === | ||
Line 48: | Line 55: | ||
* Info header name: BITMAPV5HEADER | * Info header name: BITMAPV5HEADER | ||
* PRONOM: {{PRONOM|fmt/119}} | * PRONOM: {{PRONOM|fmt/119}} | ||
+ | |||
+ | Introduced with Windows 98. | ||
== Other versions == | == Other versions == | ||
Line 69: | Line 78: | ||
The fields in the first 40 bytes of the header are (nearly) identical to those in Windows BMP v3, v4, and v5. The remaining fields are different. | The fields in the first 40 bytes of the header are (nearly) identical to those in Windows BMP v3, v4, and v5. The remaining fields are different. | ||
− | OS/2 BMP 2.0 supports compression | + | OS/2 BMP 2.0 supports compression types "Huffman 1D" and "RLE24", unlike any other version of BMP. |
=== BITMAPV2INFOHEADER === | === BITMAPV2INFOHEADER === | ||
Line 92: | Line 101: | ||
== Sample images == | == Sample images == | ||
− | * [http://wvnvms.wvnet.edu/vmswww/bmp.html Example BMP images (all Windows | + | * [http://wvnvms.wvnet.edu/vmswww/bmp.html Example BMP images (all Windows v3 except as indicated)] |
* [http://entropymine.com/jason/bmpsuite/bmpsuite/html/bmpsuite.html BMP Suite Image List] | * [http://entropymine.com/jason/bmpsuite/bmpsuite/html/bmpsuite.html BMP Suite Image List] | ||
Revision as of 20:25, 27 March 2013
Contents |
Overview
BMP is a family of raster graphics image file formats designed to store bitmap digital images independently of a display device. BMP was originally and is primarily used on Microsoft Windows and OS/2 operating systems. The format is sometimes known as Device-Independent Bitmap (DIB), since, when loaded into memory using Windows software, the image is held as a DIB structure.
Though seemingly a simple format, it is complicated by its many different versions, lack of an official specification, lack of any version control process, and ambiguities and contradictions in the documentation.
Images are usually uncompressed, but RLE compression can be used under some conditions. The rare OS/2 2.0 format also supports Huffman 1D compression.
Identification
No MIME type has been officially registered. Strings found in practice are: image/bmp; image/x-bmp; image/x-ms-bmp
The standard file extension is .bmp. Reportedly, .dib and .rle have occasionally been used.
BMP files start with bytes 'B' 'M' ?? ?? 00 00 00 00
.
Well-known versions
BMP files use a common 14-byte file header, named BITMAPFILEHEADER. Following that is the "Info header", which begins with a 4-byte integer indicating its size. The Info header size (mostly) reveals the version of BMP that the file uses.
Windows BMP v2
- Info header size: 12
- Info header name: BITMAPCOREHEADER or OS21XBITMAPHEADER
- PRONOM: fmt/115
Also known as OS/2 BMP 1.0.
Some sources say that the height and width fields in Windows BMP v2 are signed (which would make the Windows v2 and OS/2 1.0 formats slightly different), but modern documentation says they are unsigned.
Windows BMP v3
This is by far the most widely used version of BMP. It was introduced with Windows 3.x. Windows NT extended it to support 16 and 32 bits/pixel.
Windows CE also extended it, for example to allow 2 bits/pixel, but its extensions were not migrated to the BMP v4 and v5 formats.
It is apparently possible for OS/2 2.0 format to masquerade as Windows v3. The upshot is that if the compression type is 3 and the bit depth is 1, or the compression type is 4 and the bit depth is 24, then the file should be treated as OS/2 BMP 2.0.
Windows BMP v4
- Info header size: 108
- Info header name: BITMAPV4HEADER
- PRONOM: fmt/118
Introduced with Windows 95.
Windows BMP v5
- Info header size: 124
- Info header name: BITMAPV5HEADER
- PRONOM: fmt/119
Introduced with Windows 98.
Other versions
Windows BMP v1
- PRONOM: fmt/114
This is the bitmap file format used by Windows 1.0. It's not really a BMP format. It has a 10-byte file header, and is also called "DDB" (Device-Dependent Bitmap).
OS/2 BMP 2.0
- Info header size: 16–64 (16, 40, 48, and 64 may be most common)
- Info header name: BITMAPCOREHEADER2 or OS22XBITMAPHEADER
- PRONOM: x-fmt/270
See also OS/2 BMP.
OS/2 BMP 2.0 defines several file subtypes; here we are describing only the "Bitmap" subtype (files with a signature of "BM").
The header size can be reduced from its full size of 64 bytes. Omitted fields are assumed to have a value of zero.
The fields in the first 40 bytes of the header are (nearly) identical to those in Windows BMP v3, v4, and v5. The remaining fields are different.
OS/2 BMP 2.0 supports compression types "Huffman 1D" and "RLE24", unlike any other version of BMP.
BITMAPV2INFOHEADER
- Info header size: 52
- Info header name: BITMAPV2INFOHEADER
No details known.
BITMAPV3INFOHEADER
- Info header size: 56
- Info header name: BITMAPV3INFOHEADER
No details known.
Specifications
- BITMAPFILEHEADER
- BITMAPCOREHEADER
- BITMAPINFOHEADER
- BITMAPINFOHEADER (Windows CE 5.0)
- BITMAPV4HEADER
- BITMAPV5HEADER
Sample images
Resources
- BMP (file format): Wikipedia
- Bitmap Image File (BMP), Version 5, from Library of Congress resource on Sustainability of Digital Formats
- Microsoft Windows Bitmap File Format Summary From Encyclopedia of Graphics File Formats at FileFormat.Info (1996)
- OS/2 Bitmap File Format Summary From Encyclopedia of Graphics File Formats at FileFormat.Info (1996)