DiemazzCivil townshipImage:Tractionmassage JPG Kato Airline 370 Will John Tax protester conspiracy arguments Mérens Smith's Cloud Olinda Punk fashion Nyewo Benue Pope Severinus Talk:Lossless JPEG Osaka Municipal Subway Sado Province Golf Club of Lebanon UK railway stations Q Jason Friedberg KUKC File:Borobudur 2008 JPG Mount Pippu 1340s List of Portuguese films ace frehley costume CBS Paramount Television cassidy freestyle battle lyrics Bouzy File:China Shandong png Tatara Bridge Gallery road Perlo, Italy Ogdoad Erotica Wikipedia:LINKRELEVANT Private collection Mariah Carey Taekkyeon Nara Dreamland Code share Geography of Africa Ahmed Ammi beeman r7 Myxini |
The BMP file format, sometimes called bitmap or DIB file format (for device-independent bitmap), is an image file format used to store bitmap digital images, especially on Microsoft Windows and OS/2 operating systems. Many graphical user interfaces use bitmaps in their built-in graphics subsystems;[1] for example, the Microsoft Windows and OS/2 platforms' GDI subsystem, where the specific format used is the Windows and OS/2 bitmap file format, usually named with the file extension of
Pixel storageIn uncompressed BMP files, and many other bitmap file formats, image pixels are stored with a color depth of 1, 4, 8, 16, 24, or 32 bits per pixel. Images of 8 bits and fewer can be either grayscale or indexed color. An alpha channel (for transparency) may be stored in a separate file, where it is similar to a grayscale image, or in a fourth channel that converts 24-bit images to 32 bits per pixel. Uncompressed bitmap files (such as BMP) are typically much larger than compressed (with any of various methods) image file formats for the same image. For example, the 1058×1058 Wikipedia logo, which occupies about 287.65 KB in the PNG format, takes about 3358 KB as a 24-bit BMP file. Uncompressed formats are generally unsuitable for transferring images on the Internet or other slow or capacity-limited media. The bits representing the bitmap pixels are packed within rows. Depending on the color depth, a pixel in the picture will occupy at least n/8 bytes (n is the bit depth, since 1 byte equals 8 bits). The approximate size for a n-bit (2n colors) BMP file in bytes can be calculated, including the effect of starting each word on a 32-bit dword boundary, as:
In the formula above, 54 is the size of the headers in the popular Windows V3 BMP version (14-byte BMP file header plus 40-byte DIB V3 header); some other header versions will be larger or smaller than that, as described in tables below. And For detailed information, see the sections on file format below. Device-independent bitmaps and BMP file formatMicrosoft has defined a particular representation of color bitmaps of different color depths, as an aid to exchanging bitmaps between devices and applications with a variety of internal representations. They called these device-independent bitmaps or DIBs, and the file format for them is called DIB file format or BMP file format. According to Microsoft support:[2] Since BMP/DIB format was created for the Intel X86 architecture, all integers are stored in little-endian format.
A typical BMP file usually contains the following blocks of data:
The following sections discuss the data stored in the BMP file or DIB in details. This is the standard BMP file format.[2] Some bitmap images may be stored using a slightly different format, depending on the application that creates it. Also, not all fields are used; a value of 0 will be found in these unused fields. DIBs in memoryA BMP file is loaded into memory as a DIB data structure, an important component of the Windows GDI API. The DIB data structure is the same as the BMP file format, but without the 14-byte BMP header. BMP file headerThis block of bytes is at the start of the file and is used to identify the file. A typical application reads this block first to ensure that the file is actually a BMP file and that it is not damaged. Note that the first two bytes of the BMP file format (thus the BMP header) are stored in big-endian order. This is the magic number 'BM'. All of the other integer values are stored in little-endian format (i.e. least-significant byte first).
Bitmap information (DIB header)This block of bytes tells the application detailed information about the image, which will be used to display the image on the screen. The block also matches the header used internally by Windows and OS/2 and has several different variants. All of them contain a dword field, specifying their size, so that an application can easily determine which header is used in the image. The reason that there are different headers is that Microsoft extended the DIB format several times. The new extended headers can be used with some GDI functions instead of the older ones, providing more functionality. Since the GDI supports a function for loading bitmap files, typical Windows applications use that functionality. One consequence of this is that for such applications, the BMP formats that they support match the formats supported by the Windows version being run. See the table below for more information.
For compatibility reasons, most applications use the older DIB headers for saving files. With OS/2 being obsolete, for now the only common format is the V3 header. See next table for its description. All values are stored as unsigned integers, unless explicitly noted.
Note: The image size field can be 0 for BI_RGB bitmaps. The compression method field (bytes #30-33) can have the following values:
Note: BI_JPG and BI_PNG are for printer drivers and are not supported when rendering to the screen.[3] The OS/2 V1 header is also popular:
Note: OS/2 V1 bitmaps cannot be compressed and cannot be 16 or 32 bits/pixel. All values in the OS/2 V1 header are unsigned integers. A 32-bit version of DIB with integrated alpha channel has been introduced with Windows XP and is used within its logon and theme system; it has yet to gain wide support in image editing software, but has been supported in Adobe Photoshop since version 7 and Adobe Flash since version MX 2004 (then known as Macromedia Flash). Color paletteThe palette occurs in the BMP file directly after the BMP header and the DIB header. Therefore, its offset is the size of the BMP header plus the size of the DIB header. The palette is a block of bytes (a table) listing the colors available for use in a particular indexed-color image. Each pixel in the image is described by a number of bits (1, 4, or 8) which index a single color in this table. The purpose of the color palette in indexed-color bitmaps is to tell the application the actual color that each of these index values corresponds to. A DIB always uses the RGB color model. In this model, a color is terms of different intensities (from 0 to 255) of the additive primary colors red (R), green (G), and blue (B). A color is thus defined using the 3 values for R, G and B (though stored in backwards order in each palette entry). The number of entries in the palette is either 2n or a smaller number specified in the header (in the OS/2 V1 format, only the full-size palette is supported).[2][4] Each entry contains four bytes, except in the case of the OS/2 V1 versions, in which case there are only three bytes per entry.[4] The first (and only for OS/2 V1) three bytes store the values for blue, green, and red, respectively,[2] while the last one is unused and is filled with 0 by most applications. As mentioned above, the color palette is not used when the bitmap is 16-bit or higher; there are no palette bytes in those BMP files. Bitmap dataThis block of bytes describes the image, pixel by pixel. Pixels are stored "upside-down" with respect to normal image raster scan order, starting in the lower left corner, going from left to right, and then row by row from the bottom to the top of the image.[2] Uncompressed Windows bitmaps can also be stored from the top row to the bottom, if the image height value is negative. In the original DIB, the only four legal numbers of bits per pixel are 1, 4, 8, and 24.[2] In all cases, each row of pixels is extended to a 32-bit (4-byte) boundary, filling with an unspecified value (not necessarily 0) so that the next row will start on a multiple-of-four byte location in memory or in the file.[2] The total number of bytes in a row can be calculated as the image size/bitmap height in pixels. Following these rules there are several ways to store the pixel data depending on the color depth and the compression type of the bitmap. One-bit (two-color, for example, black and white) pixel values are stored in each bit, with the first (left-most) pixel in the most-significant bit of the first byte.[2] An unset bit will refer to the first color table entry, and a set bit will refer to the last (second) table entry. Four-bit color (16 colors) is stored with two pixels per byte, the left-most pixel being in the more significant nibble.[2] Each pixel value is an index into a table of up to 16 colors. Eight-bit color (256 colors) is stored one pixel value per byte. Each byte is an index into a table of up to 256 colors. RGB color (24-bit) pixel values are stored with bytes in the same order (blue, green, red) as in the color table.[2] Example of a 2x2 Pixel, 24-Bit Bitmap
Usage of BMP formatThe simplicity of the BMP file format, and its widespread familiarity in Windows and elsewhere, as well as the fact that this format is relatively well documented and free of patents, makes it a very common format that image processing programs from many operating systems can read and write. While most BMP files have a relatively large file size due to lack of any compression, many BMP files can be considerably compressed with lossless data compression algorithms such as ZIP (up to 0.1% of original size) because they contain redundant data. Related formatsThe X Window System uses a similar XBM format for black-and-white images, and XPM (pixelmap) for color images. There are also a variety of "raw" formats, which saves raw data with no other information. The Portable Pixmap (PPM) and Truevision TGA formats also exist, but are less often used – or only for special purposes; for example, TGA can contain transparency information. Numerous other bitmap file formats are in use, though most not widely.[5] See alsoReferences
External links
|
Site Map: RSS 2.0
Recent Searches:
BMP file format
Related Pages: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||