|
|
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 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.
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].
źródło: http://pl.wikipedia.org |
|
|