Logo Windows icon software company Icon SoftwareIcons DownloadsF.A.Q.Contact  
Icon Software
Graphic Software
Icons Downloads
Order Icons
Windows icon sets
Icon Design
Forum
Support
EnglishDeutsch - GermanРусский - RussianEspañol - SpanishFrançais - FrenchItaliano - Italian日本語 - JapaneseNederlands - Dutch中文(简体) - ChineseNorsk - Norwegian
Download Database Toolbar Icons

free icons
Image BMP Viewer
 Overview  Screenshots  Download  Purchase


BMP file standard

Windows bitmap files are stored in a device-independent bitmap (DIB) format that allows Windows to display the bitmap on any type of display device. The term "device independent" means that the bitmap specifies pixel color in a form independent of the method used by a display to represent color. The default filename extension of a Windows DIB file is .BMP.

Bitmap-File Structures

Each bitmap file contains a bitmap-file header, a bitmap-information header, a color table, and an array of bytes that defines the bitmap bits. The file has the following form:

BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;
RGBQUAD aColors[];
BYTE aBitmapBits[];

The bitmap-file header contains information about the type, size, and layout of a device-independent bitmap file. The header is defined as a BITMAPFILEHEADER structure.

The bitmap-information header, defined as a BITMAPINFOHEADER structure, specifies the dimensions, compression type, and color format for the bitmap.

The color table, defined as an array of RGBQUAD structures, contains as many elements as there are colors in the bitmap. The color table is not present for bitmaps with 24 color bits because each pixel is represented by 24-bit red-green-blue (RGB) values in the actual bitmap data area. The colors in the table should appear in order of importance. This helps a display driver render a bitmap on a device that cannot display as many colors as there are in the bitmap. If the DIB is in Windows version 3.0 or later format, the driver can use the biClrImportant member of the BITMAPINFOHEADER structure to determine which colors are important.

The BITMAPINFO structure can be used to represent a combined bitmap-information header and color table. The bitmap bits, immediately following the color table, consist of an array of BYTE values representing consecutive rows, or "scan lines," of the bitmap. Each scan line consists of consecutive bytes representing the pixels in the scan line, in left-to-right order. The number of bytes representing a scan line depends on the color format and the width, in pixels, of the bitmap. If necessary, a scan line must be zero-padded to end on a 32-bit boundary. However, segment boundaries can appear anywhere in the bitmap. The scan lines in the bitmap are stored from bottom up. This means that the first byte in the array represents the pixels in the lower-left corner of the bitmap and the last byte represents the pixels in the upper-right corner.

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:

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.

The biClrUsed member of the BITMAPINFOHEADER structure specifies the number of color indexes in the color table actually used by the bitmap. If the biClrUsed member is set to zero, the bitmap uses the maximum number of colors corresponding to the value of the biBitCount member. An alternative form of bitmap file uses the BITMAPCOREINFO, BITMAPCOREHEADER, and RGBTRIPLE structures.

Bitmap Compression

Windows supports run-length encoded (RLE) formats for compressing bitmaps that use 4 bits per pixel and 8 bits per pixel. Compression reduces the disk and memory storage required for a bitmap.

Compression of 8-Bits-per-Pixel Bitmaps

When the biCompression member of the BITMAPINFOHEADER structure is set to BI_RLE8, the DIB is compressed using a run-length encoded format for a 256-color bitmap. This format uses two modes: encoded mode and absolute mode. Both modes can occur anywhere throughout a single bitmap.

Encoded Mode

A unit of information in encoded mode consists of two bytes. The first byte specifies the number of consecutive pixels to be drawn using the color index contained in the second byte. The first byte of the pair can be set to zero to indicate an escape that denotes the end of a line, the end of the bitmap, or a delta. The interpretation of the escape depends on the value of the second byte of the pair, which must be in the range 0x00 through 0x02. Following are the meanings of the escape values that can be used in the second byte:

0 - End of line.
1 - End of bitmap.
2 - Delta. The two bytes following the escape contain unsigned values indicating the horizontal and vertical offsets of the next pixel from the current position.

Absolute Mode

Absolute mode is signaled by the first byte in the pair being set to zero and the second byte to a value between 0x03 and 0xFF. The second byte represents the number of bytes that follow, each of which contains the color index of a single pixel. Each run must be aligned on a word boundary. Following is an example of an 8-bit RLE bitmap (the two-digit hexadecimal values in the second column represent a color index for a single pixel):

Compressed data - Expanded data

03 04 04 04 04
05 06 06 06 06 06 06
00 03 45 56 67 00 45 56 67
02 78 78 78
00 02 05 01 Move 5 right and 1 down
02 78 78 78
00 00 End of line
09 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E
00 01 End of RLE bitmap

Compression of 4-Bits-per-Pixel Bitmaps

When the biCompression member of the BITMAPINFOHEADER structure is set to BI_RLE4, the DIB is compressed using a run-length encoded format for a 16-color bitmap. This format uses two modes: encoded mode and absolute mode.

Encoded Mode

A unit of information in encoded mode consists of two bytes. The first byte of the pair contains the number of pixels to be drawn using the color indexes in the second byte.

The second byte contains two color indexes, one in its high-order nibble (that is, its low-order 4 bits) and one in its low-order nibble.

The first pixel is drawn using the color specified by the high-order nibble, the second is drawn using the color in the low-order nibble, the third is drawn with the color in the high-order nibble, and so on, until all the pixels specified by the first byte have been drawn.

The first byte of the pair can be set to zero to indicate an escape that denotes the end of a line, the end of the bitmap, or a delta. The interpretation of the escape depends on the value of the second byte of the pair. In encoded mode, the second byte has a value in the range 0x00 through 0x02. The meaning of these values is the same as for a DIB with 8 bits per pixel.

Absolute Mode

In absolute mode, the first byte contains zero, the second byte contains the number of color indexes that follow, and subsequent bytes contain color indexes in their high- and low-order nibbles, one color index for each pixel. Each run must be aligned on a word boundary.

Following is an example of a 4-bit RLE bitmap (the one-digit hexadecimal values in the second column represent a color index for a single pixel):

Compressed data - Expanded data

03 04 0 4 0
05 06 0 6 0 6 0
00 06 45 56 67 00 4 5 5 6 6 7
04 78 7 8 7 8
00 02 05 01 Move 5 right and 1 down
04 78 7 8 7 8
00 00 End of line
09 1E 1 E 1 E 1 E 1 E 1
00 01 End of RLE bitmap

AhaView is a handy bitmap viewer and converter. It allows you to browse, view, organize and convert your bmp images.

convert jpg With AhaView you can:
  • Browse BMP images in the thumbnail mode
  • View BMP images in the full-screen mode
  • Convert your BMP images to JPEG, PNG, GIF formats
  • Convert your BMP images to 16 colors, 256 colors, 16 bit, 15 bit, 24 bit, 32 bit
  • Convert your JPG, PNG, GIF files to BMP
  • Attach descriptions to bitmap files
  • Show a sequence of bitmap images as a slide show
  • Explore image properties
  • Copy images to the clipboard
  • Copy, move, duplicate and rename image files
  • Use command line interface
Supported formats:
  • BMP - Windows Bitmap (1-32 bits)
  • JPG - JPEG JFIF Image
  • PSD - Adobe Photoshop Image
  • PNG - Portable Network Graphics
  • ICO - Windows Icon
  • CUR - Windows Cursor
  • ANI - Animated Cursor
  • GIF - Compuserve Graphics Interchange Format
  • TGA - Targa image
  • XBM - X Bitmap
  • XPM - X Pixmap
  • WMF - Windows Metafile
  • WBMP - Wireless Bitmap
System requirements: Windows 95/98/ME/2000/NT/XP/2003/Vista/7/8/10, 32 MB RAM, Pentium-133 MHz, 2 MB Hard Disk.

Trial limitations: 30-day trial period, nag screen.

Download:  exe   zip

Icon editors and icons

 Perfect Toolbar Icons

Perfect Toolbar Icons

 Business Toolbar Icons

Business Toolbar Icons

Icon IconLover is our pick. It allows you to design and edit all kinds of graphics required in the software development cycle, including icons, static and animated cursors and interface elements - all these graphics can now be designed in a single application.

Dollar icon Business Icon Set will make your software and web products look more modern and attractive. File formats included into the set are Windows icons, GIF and PNG images.

Icon ArtIcons Pro is an advanced icon-specific utility for Windows. It supports ICO, BMP, PNG, GIF, PSD, XPM, XBM, WBMP, CUR and ANI image formats and allows you to manage icon libraries.

Icon ArtCursors allows you to find, create, edit, import and export cursors and manage cursor libraries. It supports static and animated cursors.

Icon Any to Icon converts icons and cursors into BMP, JPG, PNG, GIF, ICO, CUR and other formats. This wizard can find icons and make images for use on Web pages.