BMP

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

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]!