Ten artykuł dotyczy formatu plików graficznych. Zobacz też: Beep Media Player, odtwarzacz muzyki dla Linuksa.

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™, jednak jako wolny od patentów jest dostępny i – mimo dużych rozmiarów – popularny 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.

edytuj Struktura pliku BMP

Plik BMP składa się z trzech części:

  • nagłówka
  • palety typu RGB (opcjonalna)
  • danych obrazowych

Nagłówek pliku BMP składa się z 54 bajtów i 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 warstw kolorów, zwykle 1
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 biClrRotation 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, nieuż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 = R + 256 * G + 65536 * B,
    gdzie:
    • 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ą one na mniejszej ilości bajtów – przykładowo 16-bitowa bitmapa (High Color) zapisuje na dwóch bajtach [6bitów B][5bitów G][5bitów R]. Dla plików z liczbą kolorów mieszczącą się w liczbie ośmiobitowej, kolor zapisywany jest jako numer koloru (wskaźnik) w palecie.

Należy zwrócić uwagę, że (poniekąd ze względów historycznych) w wierszu danych pliku BMP jest zawsze zapisana wielokrotność 4 bajtów. Jeśli wiersz danych ma długość (w bajtach) inną, niż podzielna przez 4, to dopisuje się bajty o wartości 0.

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.

Należy zwrócić szczególną uwagę na zapis kolejnych bajtów danych obrazu: nie jest to [R, G, B], ale [B, G, R].

edytuj Zobacz też