Bitmapa Windows (.bmp)
Microsoft StandardBitmap Image File (BMP) to podstawowy, niezależny od urządzenia format grafiki rastrowej firmy Microsoft, przechowujący nieskompresowane lub skompresowane za pomocą RLE linie skanowania z bezpośrednią kompatybilnością ze sprzętową pamięcią ramki (framebuffer).
Konwertuj BMP na PNG
Darmowy konwerter z BMP na PNG w przeglądarce. Konwertuj pliki natychmiast na swoim urządzeniu.
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki BMP, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki BMP, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
42 4DREPREZENTACJA ASCII: BM
Normalizacja: Microsoft Windows Device-Independent Bitmap (DIB) Architecture
Specyfikacja techniczna
| Architektura kontenera | BITMAPFILEHEADER, po którym następują BITMAPINFOHEADER (DIB) oraz tablica pikseli rastrowych |
| Kompresja | Nieskompresowane surowe linie skanowania lub opcjonalne kodowanie długości serii BI_RLE8 / BI_RLE4 |
| Kolejność bajtów (Endianness) | Little-Endian (kolejność bajtów Intel x86) |
| Przestrzenie kolorów | Zależny od urządzenia RGB, sRGB (osadzony w BITMAPV5HEADER) |
| Kanały i struktura | 1-bitowy monochromatyczny, 4-bitowy / 8-bitowy z paletą, 16-bitowy, 24-bitowy RGB lub 32-bitowy RGBA |
| Maks. wymiary | 2 147 483 647 x 2 147 483 647 pikseli (ze znakiem, 32-bitowa liczba całkowita) |
| Przezroczystość | 32-bitowa maska alfa BGRA obsługiwana w nowszych formatach BITMAPV3HEADER i V5HEADER |
| Streaming i progresywne ładowanie | Brak obsługi strumieniowania; linie skanowania zapisywane od dołu do góry (bottom-up), chyba że wysokość jest ujemna |
Techniczna macierz porównawcza: BMP a konkurencja
| Atrybut techniczny | BMP (Bieżący) | PNG | TIFF | JPG |
|---|---|---|---|---|
| Tryb kompresji | Neskompresowany / Minimalne RLE | Bezstratny Deflate (ok. 70% mniejszy) | Neskompresowany / LZW / Zip | Stratny DCT (~90% mniejszy) |
| Prędkość dekodowania | Natychmiastowe kopiowanie pamięci | Wymaga dekompresji Deflate | Wymaga dekompresji LZW/ZIP | Wymaga obliczenia IDCT |
| Kolejność linii skanowania | Od dołu do góry (odwrócona) | Od góry do dołu | Od góry do dołu / Paski | Bloki MCU od góry do dołu |
| Przydatność w sieci Web | Bardzo słaba (nadmuchane pliki) | Doskonała do grafiki | Słaba (do publikacji biurowych) | Doskonała do fotografii |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Obraz renderuje się przesunięty po przekątnej lub zniekształcony pod kątem.
Główna przyczyna: Nieprawidłowe obliczenie wyrównania wierszy (brak dopełnienia każdej linii skanowania do granicy 4 bajtów).
Odzyskiwanie: Przekoduj ponownie za pomocą konwertera obrazów File2File.app, aby wymusić prawidłowy 32-bitowy krok linii skanowania.
Analiza bezpieczeństwa i wektory ataku na parser
Dekodery BMP często odczytują dane poza zakresem bufora podczas przydzielania pamięci na podstawie niezaufanych wymiarów w nagłówku DIB.
Znane wektory ataku
- Przepełnienie liczby całkowitej w obliczeniach szerokość * wysokość * głębia kolorów (bpp), prowadzące do małej alokacji pamięci sterty i zapisu poza granicami bufora.
- Uszkodzone sekwencje ucieczkowe długości serii RLE8/RLE4 powodujące zapis pamięci poza przydzielonym buforem.
- Atak typu odmowa usługi (DoS) poprzez alokację pamięci rzędu wielu gigabajtów wywołaną spreparowanymi wymiarami nagłówka.
Najlepsze praktyki obronne: Ścisła walidacja granic szerokości, wysokości i głębi bitowej nagłówka DIB przed alokacją pamięci docelowej.
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Brak degradacji kompresji: 100% dokładne odwzorowanie pikseli bez jakichkolwiek artefaktów kompresji.
- BMP ma natywny kodek w systemie Windows, a obsługa w innych systemach operacyjnych i aplikacjach zależy od środowiska.
- Niewielka złożoność dekodowania sprawia, że BMP dobrze nadaje się do użycia w mikrokontrolerach wbudowanych i nauki programowania grafiki.
Ograniczenia techniczne i wady
- Ogromne rozmiary plików ze względu na brak nowoczesnej kompresji entropowej, takiej jak DEFLATE czy kodowanie Huffmana.
- Nieefektywny w transmisji webowej lub dystrybucji w sieciach mobilnych.
- Kolejność linii skanowania od dołu do góry wymaga pionowego odwracania wierszy w nowoczesnych potokach graficznych typu top-down.
Ciekawe informacje techniczne
- BMP domyślnie przechowuje linie skanowania obrazu do góry nogami (od dołu do góry) ze względu na matematyczny kartezjański układ współrzędnych używany w systemie OS/2.
- Jeśli wartość wysokości w nagłówku BMP zostanie ustawiona na liczbę ujemną, obraz jest dekodowany prawidłowo (od góry do dołu).
- Każda linia skanowania w pliku BMP musi być dopełniona zerami do wielokrotności 4 bajtów (wyrównanie do granicy 32-bitowej).
Często zadawane pytania techniczne
Dlaczego pliki BMP są takie duże?
Pliki BMP przechowują surowe, nieskompresowane wartości kolorów dla każdego pojedynczego piksela, podczas gdy formaty takie jak PNG kompresują te dane bez utraty jakiejkolwiek jakości.
Czy BMP obsługuje przezroczystość?
Tak. 32-bitowe pliki BMP (używające BITMAPV3HEADER lub nowszego) mogą przechowywać 8-bitowy kanał alfa, chociaż obsługa różni się w starszym oprogramowaniu.
Jak mogę zmniejszyć rozmiar pliku BMP?
Konwersja pliku BMP do PNG za pomocą File2File.app zazwyczaj zmniejsza jego rozmiar o 60%-85%, bez utraty jakości obrazu.
Powiązane pary konwersji BMP
Konwersja nieskompresowanych plików Windows Bitmap do formatu PNG zapewnia bezstratną kompresję, która zmniejsza rozmiar plików bez pogarszania jakości obrazu.
Konwersja plików Portable Network Graphics do formatu Windows Bitmap przekształca skompresowane dane rastrowe w nieskompresowaną siatkę pikseli dla starszych systemów operacyjnych i potoków sprzętowych.
Umieść obsługiwany zrzut ekranu BMP na jednej stronie PDF w celu utworzenia zgłoszenia lub raportu. Ta ścieżka akceptuje nieskompresowane 24-bitowe lub 32-bitowe piksele, a nie skompresowane warianty BMP.