Bitmap Windows (.bmp)

Microsoft Standard

Bitmap Image File (BMP) este formatul raster fundamental al Microsoft, independent de dispozitiv, care stochează linii de scanare necomprimate sau comprimate RLE și este compatibil direct cu memoria tampon hardware.

Convertește din BMP în PNG

Convertor gratuit din BMP în PNG direct în browser. Convertește fișiere instantaneu pe dispozitivul tău.

Inspectare și metadate

Sistemele de operare și analizatoarele de fișiere identifică fișierele BMP prin inspectarea secvenței binare inițiale:

Selectează sau plasează fișierele aici

Privat - fișierele nu părăsesc niciodată dispozitivul tău

sau lipește Ctrl+V
Garanție de confidențialitate: nicio transmisie prin rețea: 0 octeți încărcați pe servere externe. Toată procesarea a avut loc local în sandbox-ul browserului tău.

Semnătura antetului la nivel de octet (octeți magici)

Sistemele de operare și analizatoarele de fișiere identifică fișierele BMP prin inspectarea secvenței binare inițiale:

SEMNĂTURĂ HEXAZECIMALĂ (DECALAJ 0):

42 4D

REPREZENTARE ASCII: BM

Standardizare: Microsoft Windows Device-Independent Bitmap (DIB) Architecture

Specificații tehnice

Arhitectură containerAntet BITMAPFILEHEADER urmat de BITMAPINFOHEADER (DIB) și matricea de pixeli
CompresieLinii de scanare brute necomprimate sau, opțional, codare BI_RLE8 / BI_RLE4 cu lungime variabilă
Ordinea octețilorLittle-Endian (ordinea octeților Intel x86)
Spații de culoareRGB dependent de dispozitiv, sRGB (BITMAPV5HEADER embedded)
Canale și structurăMonocrom pe 1 bit, paletă pe 4 sau 8 biți, RGB pe 16 sau 24 de biți ori RGBA pe 32 de biți
Dimensiuni maxime2.147.483.647 x 2.147.483.647 de pixeli (întreg cu semn pe 32 de biți)
TransparențăMasca alfa BGRA pe 32 de biți este acceptată de formatele BITMAPV3HEADER și V5HEADER moderne
Streaming și progresivNu poate fi transmis în flux; liniile sunt stocate de jos în sus dacă înălțimea nu este negativă

Matrice de comparație tehnică: BMP vs. concurenți

Atribut tehnicBMP (Curent)PNGTIFFJPG
Mod de compresieNecomprimat / RLE minimalCompresie Deflate fără pierderi; economia de spațiu depinde de conținutul imaginiiNecomprimat / LZW / ZipDCT cu pierderi (~90% mai mic)
Viteză de decodareCopiere instantanee în memorieNecesită decompresie DeflateNecesită decompresie LZW/ZIPNecesită calcul IDCT
Ordonarea liniilor de scanareDe jos în sus (inversat)De sus în josDe sus în jos / BenziBlocuri MCU de sus în jos
Adecvare pentru webFoarte slabă (fișiere voluminoase)Excelent pentru graficăSlabă (publicații desktop)Excelent pentru fotografie

Moduri comune de corupție și ghid de recuperare hexazecimală

Imaginea este redată deformată pe diagonală sau înclinată la un unghi.

Cauză principală: Calcul incorect al umplerii rândurilor (eșecul de a completa fiecare linie de scanare la o limită de 4 octeți).

Recuperare: Re-encodează imaginea cu File2File.app Image Converter pentru a impune un pas corect de 32 de biți între liniile de scanare.

Analiză de securitate și vectori de atac asupra parserului

Decodificatoarele BMP suferă adesea de citiri excesive ale memoriei tampon (buffer over-reads) atunci când alocă buffere pe baza dimensiunilor din antetul DIB care provin din surse nesigure.

Vectori de atac cunoscuți

  • Depășire de întreg (integer overflow) în calculul lățime * înălțime * bpp, ducând la o alocare mică în memorie (heap) și la scriere în afara limitelor.
  • Secvențe de escape pentru codificarea lungimii de rulare RLE8/RLE4 corupte care determină scrieri în memorie dincolo de bufferul alocat.
  • Refuz al serviciului prin alocare de memorie de mai mulți gigaocteți declanșată de dimensiuni create intenționat în antet.

Cele mai bune practici de securitate: Validează strict limitele lățimii, înălțimii și adâncimii de culoare din antetul DIB înainte de a aloca memoria destinației.

Origini istorice și repere

1998Windows 98 introduce BITMAPV5HEADER, adăugând gestionarea profilului de culoare ICC și corecția gamma.
1990Windows 3.0 standardizează specificația BITMAPINFOHEADER DIB în cadrul sistemului de operare.
1987Este introdus odată cu Windows 2.0 și OS/2 1.1 ca formatul nativ pentru afișarea raster.

Avantaje cheie și beneficii

  • Fără degradare prin compresie: stocare a pixelilor exactă la nivel de bit, cu zero artefacte de compresie.
  • Windows are un codec BMP nativ, iar suportul în alte sisteme de operare și aplicații variază.
  • Complexitatea trivială de decodare îl face ideal pentru microcontrolere încorporate și educația în programarea grafică.

Limitări tehnice și dezavantaje

  • Dimensiuni uriașe ale fișierelor din cauza lipsei compresiei moderne de entropie, cum ar fi DEFLATE sau codificarea Huffman.
  • Ineficient pentru transmisia pe web sau distribuția prin rețele mobile.
  • Ordonarea liniilor de scanare de jos în sus necesită inversarea verticală a rândurilor în fluxurile grafice moderne de sus în jos.

Curiozități tehnice interesante

  • BMP stochează liniile de scanare ale imaginii invers (de jos în sus) în mod implicit, din cauza sistemului matematic de coordonate carteziene utilizat în OS/2.
  • Dacă valoarea înălțimii din antetul BMP este setată la un număr negativ, imaginea este decodată în poziția corectă (de sus în jos).
  • Fiecare linie de scanare dintr-un fișier BMP trebuie completată cu zerouri până la un multiplu de 4 octeți (aliniere la o limită de 32 de biți).

Întrebări tehnice frecvente

De ce sunt fișierele BMP atât de mari?

Fișierele BMP stochează valori de culoare brute, necomprimate, pentru fiecare pixel în parte, în timp ce formate precum PNG comprimă acele date fără a pierde nicio calitate.

Poate formatul BMP să accepte transparența?

Da. Fișierele BMP pe 32 de biți (folosind BITMAPV3HEADER sau mai nou) pot stoca un canal alfa de 8 biți, deși suportul poate varia în cazul software-ului mai vechi.

Cum pot reduce dimensiunea unui fișier BMP?

Conversia unui fișier BMP în PNG poate reduce dimensiunea fișierului păstrând valorile pixelilor, dar rezultatul depinde de conținutul imaginii și de codarea BMP.