|Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact|
|Full name||Microsoft Windows Bitmap Format (BMP), version 5|
BMP is a simple raster graphics image file format designed to store bitmap digital images independently of a display device, originally and primarily 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. Several backwards-compatible versions have been introduced with new versions of Windows. As of late 2011, the current version of BMP is version 5, introduced with Windows 98 in 1998. This description focuses on version 5, but is relevant for earlier versions, since the structure has remained similar for backwards compatibility. The Wikipedia article on BMP has a table describing the differences between versions.
To quote from part 1 of a 1995 article by David Charlap in Dr. Dobbs's Journal, "Unlike other image-file formats like GIF (CompuServe's Graphic Interchange File format) and JPEG (Joint Photographic Experts Group), the BMP file format was not designed to be portable. Instead, it was designed to easily work with the Windows API using the same structures that Windows applications use to manipulate in-memory bitmaps. As the API changed, so did the BMP file format." BMP is used primarily for icons, screen grabs, and other purposes within Windows.
The BMP File Format version 5 is capable of storing 2D digital images of arbitrary width, height, and resolution, both monochrome and color, in various color depths (1, 4, 8, 16, 24, 32, or 64 bits per pixel). Colors may be indexed. Optional features include compression (specific lossless compression algorithms that are fast to decompress), alpha channels, and ICC color profiles. In practice most BMP images are uncompressed, and 16 bpp and 32bpp images are always uncompressed.
The structure of a BMP file incorporates two headers. The first is a 14-byte BITMAPFILEHEADER. This specifies the type of bitmap file, the size of the file, and the position (offset) in the file where the pixel data begins. This header simply permits a check for the filetype and for damage. The second header, known in general as a DIB header, supplies technical information needed to render the image, such as bits-per-pixel, image height and width in pixels, compression method. The second header will have a different name, size and different set of elements recorded depending on the version of the specification. Later versions of the DIB header added new elements at the end of the header. If an ICC profile is specified, the DIB header provides a pointer to the the beginning of the ICC information. If a color table is used it is at the end of the DIB header. Following the color table, which is mandatory for color depths of 8 or less, comes the image data. Finally, ICC Profile information, either embedded or as a reference by path to another file.
|Production phase||Used primarily for system-related and ephemeral purposes, such as icons, screen-grabs, and passing of bit-mapped images between Windows applications. Not usually delivered to the public, but occasional instances are found in web pages.|
|Relationship to other formats|
|Has earlier version||Versions 2, 3, 4 for Windows, and versions for OS/2, not separately described at this time.|
|LC experience or existing holdings||LC does not create BMP images in order to reproduce collection items or support collection preservation. Occasional BMP images may, however, be harvested as web-page elements.|
|LC preference||When digitizing collection items or acquiring born-digital pictorial content, the Library of Congress prefers TIFF_6, JPEG 2000, DNG, or JPEG.|
|Disclosure||A proprietary format, introduced and controlled by Microsoft. Documented as part of programmer support for users of Microsoft software development kits.|
Microsoft has never published a specification document for BMP. Information about structure and data encoding methods has been included in a number of programmer's references, manuals, online help facilities, and files associated with the Microsoft Windows Software Development Kits (SDKs). However, the format is well understood and has been described in detail at various times in ways that many consider more helpful. Many of these descriptions do not cover the latest version. As of December 2011, Microsoft makes information available through the Microsoft Developers Network (MSDN) Knowledge Base. A selected list of documentation sources follows:
|Adoption||The primary use of the BMP format is within the Windows operating system. The format is acknowledged as being unsuited for general use on the web or interoperability. However, because an uncompressed BMP image has such a simple structure, BMP is well supported in image viewing and manipulation software and as an inline image format recognized by web browsers.|
|Licensing and patents||No concerns.|
|Transparency||A simple raster format. Although compression is supported, most BMP images are not compressed.|
|Self-documentation||No support for embedded metadata. The only information in headers is technical information needed to render the image.|
|Technical protection considerations||None|
|Normal rendering||A simple raster format. Panning and zooming is straightforward if needed.|
|Clarity (high image resolution)||In principle, BMP images may have up to 64 bits per pixel, with image size limited only by file size. In practice, apart from as an intermediate or ephemeral format within the context of a Windows application, BMP is used primarily for small images in contexts where high-bit depth is not considered necessary.|
|Color maintenance||Since the introduction of version 5, ICC profiles can be recorded in BMP images.|
|Support for vector graphics, including graphic effects and typography||No support for vector graphics or typography.|
|Support for multispectral bands||No support for multispectral images.|
|Functionality beyond normal rendering||No capabilites beyond normal.|
||In addition to .bmp, a .dib extension is mentioned in some very early documentation, but Microsoft's own 1992 documentation [DIBs and Their Use] states that the file extension of a Windows DIB file is .bmp.|
|Internet Media Type||image/x-bmp
|From Wikipedia page on BMP|
|Internet Media Type||image/bmp
||Frequently used in Microsoft documentation, but not registered with IANA at http://www.iana.org/assignments/media-types/image/index.html.|
||The bitmap file type is declared in the first two bytes of the BMP file. Within Windows, only "BM" has been used. For OS/2, some other type codes were used: "BA"; "CI"; "IC"; "CP"; "PT"|