BMP to format obrazu bitmapowego firmy Microsoft wbudowany w system Windows, obecny w nim od najwcześniejszych wersji graficznych; blisko spokrewniony wariant pochodził z systemu OS\/2 firmy IBM. Celem nigdy nie była sprytna kompresja. BMP jest niemal prostym zrzutem pikseli, które program wyświetliłby na ekranie, opakowanym w krótki nagłówek wyjaśniający, jak je odczytać. Pliki BMP wciąż pojawiają się jako ikony i zasoby wewnątrz oprogramowania Windows, jako wynik prostych programów do przechwytywania obrazu oraz jako format pośredni, gdy jeden program przekazuje obraz innemu.
Jak BMP zapisuje swój obraz
Prawie zawsze nieskompresowany. Plik zaczyna się małym nagłówkiem zawierającym dwie litery BM, rozmiar pliku i pozycję, w której zaczynają się piksele, a następnie drugim nagłówkiem opisującym sam obraz: szerokość, wysokość, głębię bitową i sposób uporządkowania kolorów. Potem może nastąpić opcjonalna paleta, a następnie tablica pikseli, jedna wartość na piksel, bez niczego usuniętego.
Dwie cechy często zaskakują. Wiersze są zwykle zapisywane od dołu do góry, więc pierwsze piksele w pliku to lewy dolny róg obrazu, a każdy wiersz jest dopełniany do wielokrotności czterech bajtów. Głębie bitowe sięgają od 1 bitu, czyli dwóch kolorów, przez 4- i 8-bitowe palety, aż do 16, 24 i 32 bitów pełnego koloru. Dla trybów 4- i 8-bitowego istnieje kompresja o stałej długości przebiegu, ale rzadko się jej używa, a tryb 32-bitowy może zawierać kanał przezroczystości alfa, choć starsze oprogramowanie często go ignoruje.
Ponieważ nic nie jest kompresowane, rozmiar jest przewidywalny i duży: 24-bitowy BMP zajmuje trzy bajty na piksel, niezależnie od tego, co zawiera obraz, więc fotografia mieszcząca się w małym JPG-u staje się wieloma megabajtami. W zamian format jest trywialnie prosty do odczytu i zapisu oraz bezstratny: żaden detal nie jest odrzucany.
Jakie metadane zawiera BMP
Bardzo niewiele, i to jest najważniejsza rzecz, jaką trzeba wiedzieć o tym formacie. Metadane to opisowe informacje, które plik przechowuje o sobie, a BMP powstał zanim ten pomysł miał znaczenie. W BMP nie ma EXIF, IPTC ani XMP, więc nie ma miejsca na model aparatu, nazwisko fotografa, podpis czy współrzędne GPS. Nie ma pola autora, tytułu ani żadnego pola daty: jedyna data dla BMP to ta, którą przechowuje system plików, znajdująca się poza plikiem i zmieniająca się przy jego kopiowaniu.
To, co raport może pokazać, pochodzi z nagłówków i opisuje obraz, a nie jego historię:
- Szerokość, wysokość, głębia bitowa oraz to, czy wiersze biegną od dołu do góry, czy od góry do dołu.
- Metoda kompresji, która zazwyczaj w ogóle nie występuje.
- Rozdzielczość pozioma i pionowa, zapisana jako piksele na metr, a nie bardziej znane punkty na cal.
- Liczba kolorów w palecie oraz ile z nich obraz uznaje za istotne.
Jest jedna prawdziwa uwaga dotycząca prywatności. Rozszerzone nagłówki mogą dołączać profil kolorów ICC i pozwalają na jego podlinkowanie zamiast osadzania, zapisany jako ścieżka pliku na komputerze, który zapisał obraz. Taka ścieżka może ujawnić nazwę użytkownika lub strukturę cudzych folderów. To rzadkie, ale jeśli raport pokazuje podlinkowany profil, jest to realna informacja o komputerze danej osoby w inaczej niemym pliku.
Kiedy używać BMP
BMP ma sens, gdy prostota jest ważniejsza niż rozmiar: przekazywanie obrazu do programu lub urządzenia z minimalnym dekoderem, praca wewnątrz oprogramowania Windows, które go oczekuje, albo przesyłanie obrazu między dwoma etapami procesu, w którym ponowna kompresja byłaby stratą wysiłku. Ponieważ jest bezstratny, można go też wielokrotnie ponownie zapisywać bez pogarszania jakości obrazu.
Do wszystkiego, co przechowujesz, wysyłasz lub publikujesz, lepszym wyborem jest PNG. On także jest bezstratny, więc piksele wracają identyczne, ale jego filtrowanie i kompresja zwykle zmniejszają plik do ułamka rozmiaru, a dodatkowo może przenosić tytuł, autora i profil kolorów. W przypadku fotografii JPG lub WebP będą jeszcze mniejsze. Wybieraj BMP świadomie, z technicznego powodu, a nie jako ustawienie domyślne.