Bitmap Windows (.bmp)

Architettura Standard

Bitmap Image File (BMP) è il formato raster fondamentale di Microsoft, indipendente dal dispositivo. Memorizza righe di scansione non compresse o compresse con RLE ed è compatibile direttamente con il framebuffer hardware.

Converti da BMP a PNG

Convertitore gratuito da BMP a PNG nel browser. Converti i file istantaneamente sul tuo dispositivo.

Ispezione e metadati

I sistemi operativi e gli analizzatori di file identificano i file BMP ispezionando la sequenza di byte binari iniziale:

Seleziona o rilascia i file qui

Privato - i file non lasciano mai il tuo dispositivo

o incolla Ctrl+V
Garanzia di privacy con zero trasmissioni di rete: 0 byte caricati su server esterni. Tutta l'elaborazione è avvenuta localmente nella sandbox del tuo browser.

Firma dell'intestazione a livello di byte (Magic Bytes)

I sistemi operativi e gli analizzatori di file identificano i file BMP ispezionando la sequenza di byte binari iniziale:

FIRMA ESADECIMALE (OFFSET 0):

42 4D

RAPPRESENTAZIONE ASCII: BM

Standardizzazione: Architettura Microsoft Windows Device-Independent Bitmap (DIB)

Specifiche tecniche

Architettura del contenitoreBITMAPFILEHEADER seguito da BITMAPINFOHEADER (DIB) e array di pixel raster
CompressioneLinee di scansione non compresse o codifica opzionale a lunghezza di sequenza BI_RLE8 / BI_RLE4
Endianness dei byteLittle-endian (ordine dei byte Intel x86)
Spazi coloreRGB dipendente dal dispositivo, sRGB (BITMAPV5HEADER incorporato)
Canali e strutturaMonocromatico a 1 bit, con tavolozza a 4 o 8 bit, a 16 bit, RGB a 24 bit o RGBA a 32 bit
Dimensioni massime2,147,483,647 x 2,147,483,647 pixel (intero con segno a 32 bit)
TrasparenzaMaschera alfa BGRA a 32 bit supportata nei moderni formati BITMAPV3HEADER e V5HEADER
Streaming e progressivoNon supporta lo streaming; linee di scansione memorizzate capovolte (dal basso verso l'alto) a meno che l'altezza non sia negativa

Matrice di confronto tecnico: BMP vs Concorrenti

Attributo tecnicoBMP (Attuale)PNGTIFFJPG
Modalità di compressioneNon compresso / RLE minimoCompressione Deflate senza perdita; il risparmio dipende dal contenuto dell’immagineNon compresso / LZW / ZipDCT con perdita (circa il 90% più piccolo)
Velocità di decodificaCopia in memoria istantaneaRichiede la decompressione DeflateRichiede la decompressione LZW/ZIPRichiede il calcolo IDCT
Ordinamento delle linee di scansioneDal basso verso l'alto (invertito)Dall'alto verso il bassoDall'alto verso il basso / StrisceBlocchi MCU dall'alto verso il basso
Idoneità per il webMolto scarsa (payload pesanti)Eccellente per la graficaScarsa (desktop publishing)Eccellente per la fotografia

Modalità di corruzione comuni e guida al recupero esadecimale

L’immagine appare inclinata o deformata in diagonale.

Causa principale: Calcolo errato del padding delle righe: ogni riga di scansione deve essere allineata a un limite di 4 byte.

Ripristino: Riconvertire utilizzando File2File.app Image Converter per forzare il corretto passo (stride) della linea di scansione a 32 bit.

Analisi di sicurezza e vettori di attacco del parser

I decoder BMP soffrono spesso di letture di buffer oltre i limiti quando allocano buffer basati su dimensioni dell'intestazione DIB non affidabili.

Vettori di attacco noti

  • Overflow intero nel calcolo larghezza * altezza * bpp, che porta a una piccola allocazione nell'heap e a una scrittura fuori dai limiti.
  • Sequenze di escape RLE8/RLE4 corrotte, codificate a lunghezza di sequenza, che causano scritture in memoria oltre il buffer allocato.
  • Denial of service tramite allocazione di memoria di diversi gigabyte attivata da dimensioni dell'intestazione manipolate.

Migliori pratiche difensive: Convalidare rigorosamente i limiti di larghezza, altezza e profondità di colore dell'intestazione DIB prima di allocare la memoria di destinazione.

Origini storiche e tappe fondamentali

1998Windows 98 introduce BITMAPV5HEADER, aggiungendo la gestione del profilo colore ICC e la correzione della gamma.
1990Windows 3.0 standardizza la specifica DIB BITMAPINFOHEADER in tutto il sistema operativo.
1987Presentato con Windows 2.0 e OS/2 1.1 come formato raster nativo per lo schermo.

Vantaggi principali

  • Zero degrado da compressione: archiviazione dei pixel esatta al 100% bit per bit senza alcun artefatto di compressione.
  • BMP dispone di un codec nativo in Windows, mentre il supporto negli altri sistemi operativi e nelle applicazioni varia.
  • La decodifica, di complessità trascurabile, lo rende ideale per microcontrollori integrati e per l'insegnamento della programmazione grafica.

Limiti tecnici e svantaggi

  • Dimensioni dei file enormi dovute alla mancanza di una moderna compressione dell'entropia come DEFLATE o la codifica Huffman.
  • Inefficiente per la trasmissione sul web o la distribuzione su reti mobili.
  • L'ordinamento delle linee di scansione dal basso verso l'alto richiede l'inversione delle righe verticali nelle pipeline grafiche moderne orientate dall'alto verso il basso.

Curiosità tecniche

  • BMP memorizza le linee di scansione dell'immagine capovolte (dal basso verso l'alto) per impostazione predefinita a causa del sistema di coordinate cartesiane matematiche utilizzato in OS/2.
  • Se il valore dell'altezza nell'intestazione BMP è impostato su un numero negativo, l'immagine viene decodificata nel verso giusto (dall'alto verso il basso).
  • Ogni linea di scansione in un file BMP deve essere riempita con zeri fino a un multiplo di 4 byte (allineamento dei confini a 32 bit).

Domande tecniche frequenti

Perché i file BMP sono così grandi?

I file BMP memorizzano valori di colore grezzi e non compressi per ogni singolo pixel, mentre formati come PNG comprimono tali dati senza perdere alcuna qualità.

BMP può supportare la trasparenza?

Sì. I file BMP a 32 bit (che utilizzano BITMAPV3HEADER o versioni successive) possono memorizzare un canale alfa a 8 bit, sebbene il supporto vari tra i software meno recenti.

Come posso ridurre le dimensioni di un file BMP?

La conversione di un file BMP in PNG può ridurre le dimensioni del file mantenendo i valori dei pixel, ma il risultato dipende dal contenuto dell’immagine e dalla codifica BMP.