BMP - jeden z formatów plików danych z grafiką bitmapową. Opracowany pierwotnie jako natywny dla systemu OS/2, wykorzystywany później także w interfejsach systemów z rodziny Microsoft Windows (TM), jednak dostępny jako format przechowywania danych również na wszystkich pozostałych platformach. Zawiera w sobie prostą kompresję bezstratnąRLE (która nie musi być użyta), informację o użytych kolorach. Obsługuje tylko tryb RGB.
Plik BMP składa się z trzech części:
danych obrazowych
Nagłowek pliku BMP zbudowany jest w następujący sposób:
44CC66>
Offset względem początku pliku
Rozmiar w bajtach
Nazwa
Opis zawartości
0
2
bfType
Sygnatura pliku, zawsze przyjmuje wartość BM
2
4
bfSize
Długość całego pliku w bajtach
6
2
bfReserved1
Pole zarezerwowane zwykle ma wartość 0
8
2
bfReserved2
Pole zarezerwowane zwykle ma wartość 0
10
4
bfOffBits
Pozycja danych obrazowych w pliku
14
4
biSize
Wielkość, nagłówka informacyjnego. Długość stąd do końca nagłówka - 40, czasem mniej
18
4
biWidth
Szerokość obrazu pixelach
22
4
biHeight
Wysokość obrazu w pixelach
26
2
biPlanes
Liczba płatów zwykle 0
28
2
biBitCount
Liczba bitów na piksel
30
4
biCompression
Algorytm kompersji
34
4
biSizeImage
Rozmiar samego rysunku
38
4
biXpelsPerMeter
Rozdzielczość pozioma
42
4
biYpelsPerMeter
Rozdzielczość pionowa
46
4
biCrlUses
Liczba kolorów w palecie
50
1
biCrlImportant
Liczba ważnych kolorów w palecie (gdy 0 to wszystkie są ważne), pole to stosuje się przy animacji bitmap poprzez rotację kolorów. Oznacza od którego koloru paleta ma być podmieniana.
51
1
biCrlRotation
Flaga sygnalizująca czy ma następować rotacja palety (domyślnie 0-brak rotacji). Jeśli flaga jest ustawiona na 1 następuje podmiana palety.
52
2
biReserved
Po części nagłówkowej pliku BMP zazwyczaj znajduje się paleta.
Można tu wyodrębnić 2 przypadki:
W trybach 8-bitowych paleta zbudowana jest z opisów kolorów, gdzie każdy kolor opisany jest za pomocą 4 bajtów (B, G, R, nie używany, lub alpha). Każdą ze składowych koloru należy podzielić przez 4.
W trybach o większej liczbie kolorów niż 256 paleta nie występuje, a kolor pixela w obrazie zapisywany jest przy pomocy numeru kolejnego koloru który jest wyliczany ze wzoru:
Nr Koloru = FF0000>R+ 256
G+ 65536*B
gdzie to: R - wartość składowej czerwonej
G - wartość składowej zielonej
B - wartość składowej niebieskiej
Następnie w pliku znajdują się dane obrazowe.
Linie obrazu zapisywane są od dołu do góry.
W obrazach TrueColor punkty zapisywane są w kolejności B, G, R (trzy bajty), w obrazach o mniejszej liczbie kolorów zapisywane są jako numer koloru w palecie.
Animowane bitmapy - powstają z cyklicznej podmiany kolorów w palecie, przykładem może być logo startowe systemu Windows. Animowane bitmapy można tworzyć dla obrazów 8-bitowych.