Co to jest BMP? Goła mapa bitowa — i lekcja o tym, czym naprawdę jest kompresja

przez Łukasz | lip 23, 2026

Doszliśmy do końca naszej serii o formatach obrazu, i wypada zamknąć ją tam, gdzie wszystko się zaczyna — na samym dole, przy formacie, który niczego nie udaje i prawie niczego nie kompresuje. BMP to goła mapa bitowa: obraz zapisany dosłownie, piksel po pikselu, bez sprytu. Właśnie dlatego jest bezużyteczny na współczesnym webie — i właśnie dlatego jest najlepszym możliwym narzędziem, żeby wreszcie zrozumieć, co robiły wszystkie pozostałe formaty z całej serii, od JPG i PNG, przez WebP i AVIF, po GIF i TIFF. Bo żeby zobaczyć, co daje kompresja, trzeba najpierw zobaczyć obraz bez niej.

Skąd wziął się BMP

BMP (od Bitmap) to format wywodzący się wprost z Windowsa i wczesnego świata pecetów lat 80. i 90. Jego filozofia była rozbrajająco prosta: zapisz obraz tak, jak leży w pamięci — jako prostokątną siatkę pikseli, z których każdy ma zapisaną swoją barwę — żeby dowolny program w systemie mógł go odczytać i zapisać bez żadnych kombinacji. BMP z założenia niemal nie kompresuje danych (ma opcjonalną, prostą kompresję RLE, ale w praktyce najczęściej trzyma piksele w całości). To czyni go trywialnym do obsłużenia i zarazem ogromnym.

Czym naprawdę jest obraz: siatka pikseli

Tu dochodzimy do sedna, którego cała reszta serii dotykała tylko pośrednio. Każdy obraz rastrowy — JPEG, PNG, WebP, wszystko poza wektorowym SVG — to po prostu siatka pikseli, a każdy piksel to zapisana wartość koloru. BMP zapisuje tę siatkę dosłownie, i dlatego łatwo policzyć, ile to waży: liczba pikseli razy liczba bajtów na kolor.

Weźmy zwykłe zdjęcie o wymiarach 1920 na 1080 pikseli, z kolorem zapisanym na trzech bajtach (RGB). To ponad dwa miliony pikseli, a po pomnożeniu — około 6 megabajtów surowych danych. Tyle właśnie zajmie ono jako BMP. To samo zdjęcie zapisane jako JPEG potrafi ważyć 300 kilobajtów albo mniej. Ta przepaść — z 6 MB do 300 KB — to jest właśnie kompresja. Całą naszą serię można streścić jako opowieść o coraz sprytniejszych sposobach na to, żeby nie być plikiem BMP.

Co kompresja robi z siatką pikseli

Skoro wiemy już, co kompresja zmniejsza, zobaczmy, jak to robi — bo są dwie zupełnie różne strategie, i różnica między nimi jest fundamentalna.

Co to jest BMP? Goła mapa bitowa — i lekcja o tym, czym naprawdę jest kompresja

Co to jest BMP? Goła mapa bitowa — i lekcja o tym, czym naprawdę jest kompresja

Pierwsza strategia to kompresja bezstratna (tak działa PNG, tak działa opcjonalny tryb RLE w samym BMP). Jej pomysł jest prosty: zamiast zapisywać każdy piksel osobno, wyszukaj powtórzenia i zapisz je skrótem. Jeśli w rzędzie jest osiem identycznych niebieskich pikseli nieba, nie zapisuj ośmiu wartości, tylko jedną instrukcję: „osiem razy ten błękit”. Obraz po rozpakowaniu jest co do piksela identyczny z oryginałem — nic nie ginie. Haczyk jest taki, że to działa tylko tam, gdzie faktycznie są powtórzenia: płaskie tła, jednolite kolory, grafika. Zdjęcie pełne drobnego szumu i tysięcy odcieni prawie się bezstratnie nie skompresuje, bo nie ma w nim czego „zwinąć”.

Druga strategia to kompresja stratna (JPEG, a w trybie stratnym także WebP i AVIF), i ona idzie znacznie dalej. Nie ogranicza się do wyszukiwania powtórzeń — ona świadomie wyrzuca część informacji, licząc na to, że oko tego nie zauważy. Obraz dzielony jest na bloki (u JPEG-a 8 na 8 pikseli), a najsubtelniejsze szczegóły w każdym bloku są zaokrąglane albo zerowane. Efekt: plik dużo mniejszy niż cokolwiek bezstratnego, ale przy zbyt mocnej kompresji widać, czego zabrakło — krawędzie zaczynają się „brudzić”, pojawia się blokowanie i drobne cienie wokół ostrych linii. To dlatego zdjęcie znosi kompresję stratną znakomicie, a zrzut ekranu z tekstem — fatalnie.

Na ilustracji widać to obok siebie: ta sama scena zapisana wprost, piksel po pikselu (BMP), zwinięta bez straty (powtórzenia zamienione na skróty, obraz nietknięty) i skompresowana stratnie (sklejona w grubsze bloki — drobny szczegół, jak słońce, blednie, a krawędź między niebem a wzgórzem się rozmywa).

BMP kontra reszta serii

Postawienie BMP obok WebP czy AVIF jest właściwie okrutne, bo BMP przegrywa każdą konkurencję o wagę z każdym formatem, jaki opisaliśmy — łącznie ze starym JPEG-iem i GIF-em. Nie ma przezroczystości godnej uwagi, nie ma sensownej kompresji, nie ma nic, co uzasadniałoby jego obecność w internecie. Jego jedyna realna zaleta to ta sama prostota, dla której powstał: surowy, natychmiastowy dostęp do pikseli bez dekodowania. To bywa przydatne w programowaniu, systemach przemysłowych albo starych aplikacjach, gdzie ktoś chce czytać piksele wprost. Ale na stronie internetowej BMP nie ma czego szukać.

Jego wartość w tej serii jest więc czysto poznawcza. BMP to punkt odniesienia — surowa prawda o obrazie, względem której dopiero widać, jak sprytne są pozostałe formaty i czego każdy z nich unika.

Gdzie zaczyna się realny problem

Realny problem z BMP jest prosty i rzadki: czasem trafia na stronę albo do systemu ktoś, kto dostał surowy plik .bmp (z jakiegoś starego urządzenia, skanera przemysłowego czy eksportu z programu) i wrzucił go bez konwersji. Efekt to obraz ważący kilka–kilkanaście megabajtów tam, gdzie wystarczyłyby kilobajty, i najczęściej niewyświetlający się w przeglądarce tak, jak trzeba. Rozwiązanie jest zawsze to samo: skonwertować do formatu dostawczego — PNG dla grafiki, WebP albo AVIF dla zdjęć.

To ostatnia odsłona zasady, która spinała całą serię: właściwy format do właściwego zadania, a surowa mapa bitowa nigdy nie jest formatem dostawczym. Tak podchodzimy do tego w Studio iFOX — surowe i zaległe materiały (BMP, TIFF, cokolwiek „ciężkiego”) traktujemy jako źródło, z którego generujemy lekkie wersje webowe dobrane pod wydajność i Core Web Vitals. A samą konwersję i optymalizację ułatwia ImgOpti v2.

Puenta

BMP to najuczciwszy format z całej naszej serii, bo niczego nie ukrywa: pokazuje obraz takim, jakim jest naprawdę — siatką pikseli, wartość po wartości, bez sprytu i bez kompromisów. Właśnie ta dosłowność, bezużyteczna w praktyce, czyni go bezcennym w nauce. Kiedy raz zobaczysz, ile waży goła mapa bitowa i co dopiero z nią robi kompresja — bezstratna, która zwija powtórzenia, i stratna, która wyrzuca to, czego oko nie złapie — przestajesz patrzeć na formaty jak na tajemnicze skróty, a zaczynasz jak na różne odpowiedzi na jedno pytanie: jak nie być plikiem BMP. I tym pytaniem, postawionym na samym dnie, domykamy całą serię.

Agent kończy, ale zadania nie wykonał

Agent kończy, ale zadania nie wykonał

Objawy Agent odpowiada: „Przygotowałem i wysłałem potwierdzenie do klienta." Potwierdzenie nie zostało wysłane. Albo: „Zaktualizowałem wszystkie rekordy" — zaktualizował trzy z dwunastu. Albo: „Nie znalazłem żadnych zamówień" — bo narzędzie zwróciło błąd, którego nikt...

Agent zrobił coś, o co nikt nie prosił

Agent zrobił coś, o co nikt nie prosił

Objawy Operacja, której nikt nie zlecił. Dane wysłane pod adres, którego nie ma w żadnej konfiguracji. Rekord zmieniony poza zakresem zadania. Odpowiedź, z której wynika, że agent dostał instrukcje od kogoś innego niż ty. Cecha wspólna: technicznie wszystko zadziałało...

Agent zrobił to samo dwa razy

Agent zrobił to samo dwa razy

Objawy Ten syndrom różni się od pozostałych jedną rzeczą: objaw widzi klient, nie ty. Trzy identyczne wiadomości w skrzynce. Dwa zamówienia zamiast jednego. Podwójne obciążenie. Duplikaty rekordów, które ktoś zauważa tydzień później. W twoim dzienniku wszystko wygląda...

Agent gubi wątek w długim zadaniu

Agent gubi wątek w długim zadaniu

Objawy Pierwsze kroki idą wzorowo. Po kilkunastu agent zaczyna się rozjeżdżać. Przestaje przestrzegać reguły z promptu systemowego, której trzymał się na początku. Zmienia format odpowiedzi w połowie zadania. Wraca do czegoś, co już ustalił, i ustala to inaczej....

Agent podaje dane, których nie ma

Agent podaje dane, których nie ma

Objawy Numer zamówienia w idealnym formacie, którego nie ma w bazie. Kwota, której w dokumencie nie ma. Nazwa pola API, które nigdy nie istniało. Cytat z regulaminu, brzmiący dokładnie jak reszta regulaminu i w nim nieobecny. Cecha wspólna wszystkich tych przypadków:...

Działał wczoraj, dziś nie działa

Działał wczoraj, dziś nie działa

Objawy Nic się nie wywala. Nie ma wyjątków, nie ma timeoutów, dziennik wygląda tak samo jak zawsze. Po prostu odpowiedzi są gorsze. Postacie, w jakich to się objawia: Jakość. Agent zaczyna pomijać kroki, które wcześniej wykonywał, albo odpowiada ogólniej. Format....

Agent wybiera złe narzędzie

Agent wybiera złe narzędzie

Objawy Agent odpowiada nie na to pytanie. Pobiera listę zamówień, gdy pytano o jedno konkretne. Odpowiada z pamięci, choć miał sprawdzić w bazie. Albo sięga po właściwe narzędzie i wpisuje w argumenty coś, czego nie da się użyć. Sygnał, który odróżnia ten syndrom od...

Agent kręci się w kółko

Agent kręci się w kółko

Objawy Agent wykonuje kolejne obroty pętli, nie zbliżając się do zakończenia zadania. W dzienniku widać jedną z trzech postaci. Powtórzenie. To samo narzędzie, te same argumenty, raz za razem — czasem dziesiątki razy pod rząd. Oscylacja. Agent wywołuje na przemian dwa...