BMP - to jeden z formatów plików 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.
Struktura pliku BMP
Nagłówek pliku BMP zbudowany jest w następujący sposób:
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 w 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 kompresji |
34 | 4 | biSizeImage | Rozmiar samego rysunku |
38 | 4 | biXPelsPerMeter | Rozdzielczość pozioma |
42 | 4 | biYPelsPerMeter | Rozdzielczość pionowa |
46 | 4 | biClrUsed | Liczba kolorów w palecie |
50 | 1 | biClrImportant | 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 |
Nr Koloru = 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.
Uwaga! Należy zwrócić szczególną uwagę na zapis kolejnych bajtów danych obrazu!
Pamiętając, że nie jest to [R, G, B], ale [B, G, R]!