Differenze tra le versioni di "Struttura del formato BMP"

Da Gambas-it.org - Wikipedia.
Riga 20: Riga 20:
 
<BR>Il numero dei dati relativi ai colori dei pixel di <SPAN style="text-decoration:underline">ciascuna riga di pixel</span> deve essere sempre uguale ad un numero multiplo di 4. In caso contrario si aggiungono alla riga dei byte dei colori tanti byte zero quanti ne mancano per raggiungere il numero più prossimo multiplo di 4.
 
<BR>Il numero dei dati relativi ai colori dei pixel di <SPAN style="text-decoration:underline">ciascuna riga di pixel</span> deve essere sempre uguale ad un numero multiplo di 4. In caso contrario si aggiungono alla riga dei byte dei colori tanti byte zero quanti ne mancano per raggiungere il numero più prossimo multiplo di 4.
 
<BR>Prendiamo come semplice esempio un file di immagine in formato ''BMP'' composto da 3 pixel in lunghezza (tre colonne) e da 3 pixel in altezza (tre righe). Tutti i byte hanno valore FF, ad indicare che l'immagine è completamente di colore bianco. Ogni riga che compone il reticolo dell'immagine, dunque, sarà inizialmente formata da 9 byte (3 byte * 3 pixel). Ma 9 ''non'' è un multiplo di 4, e pertanto si dovranno aggiungere tanti byte zero quanti sono necessari per raggiungere il numero più vicino al 9 che sia un multiplo di 4, ossia il 12. Quindi si dovranno aggiungere per <SPAN style="text-decoration:underline">ciascuna riga di pixel</span> ben 3 byte di valore zero.
 
<BR>Prendiamo come semplice esempio un file di immagine in formato ''BMP'' composto da 3 pixel in lunghezza (tre colonne) e da 3 pixel in altezza (tre righe). Tutti i byte hanno valore FF, ad indicare che l'immagine è completamente di colore bianco. Ogni riga che compone il reticolo dell'immagine, dunque, sarà inizialmente formata da 9 byte (3 byte * 3 pixel). Ma 9 ''non'' è un multiplo di 4, e pertanto si dovranno aggiungere tanti byte zero quanti sono necessari per raggiungere il numero più vicino al 9 che sia un multiplo di 4, ossia il 12. Quindi si dovranno aggiungere per <SPAN style="text-decoration:underline">ciascuna riga di pixel</span> ben 3 byte di valore zero.
<BR>Così la struttura di questo blocco sarà come appresso riportata:
+
<BR>Così la struttura di tale blocco in questo esempio sarà il seguente:
 +
          |----------9 byte--------|
 
  .........FF FF FF FF FF FF FF FF FF <FONT color=B222222>00 00 00</font> FF FF
 
  .........FF FF FF FF FF FF FF FF FF <FONT color=B222222>00 00 00</font> FF FF
 
  FF FF FF FF FF FF FF <FONT color=B222222>00 00 00</font> FF FF FF FF FF FF FF
 
  FF FF FF FF FF FF FF <FONT color=B222222>00 00 00</font> FF FF FF FF FF FF FF
 
  FF FF <FONT color=B222222>00 00 00</font>  
 
  FF FF <FONT color=B222222>00 00 00</font>  
 
Questa regola vale anche nel caso di un'immagine rettangolare, poiché essa si applica soltanto all'insieme dei gruppi di 3 byte che impostano il colore dei relativi pixel e che compogono una ''riga'', ossia la lunghezza (''width'') in pixel della immagine.
 
Questa regola vale anche nel caso di un'immagine rettangolare, poiché essa si applica soltanto all'insieme dei gruppi di 3 byte che impostano il colore dei relativi pixel e che compogono una ''riga'', ossia la lunghezza (''width'') in pixel della immagine.

Versione delle 07:59, 26 nov 2013

Il formato BMP (Bitmap) è un formato di immagini ottenute con la tecnica della Grafica a griglia, ed i relativi file posseggono generalmente l'estensione .bmp .

Del formato BMP esistono tre versioni: la 3, la 4 e la 5.


Struttura del file BMP

Il file di formato .bmp è sostanzialmente composto da tre blocchi:

  • quello iniziale (bitmapfileheader), formato da 14 byte, che contiene informazioni sul file medesimo;
  • il bitmapinfoheader, formato da 40 byte, che contiene informazioni generiche sull'immagine;
  • quello finale che contiene i dati veri e propri relativi ai colori di ciascun pixel. Con le versioni 4 e 5 tale blocco finale è stato ampliato con l'aggiunta di nuovi campi in coda.

Per la struttura in dettaglio rinviamo alla relativa esposizione presente in Wikipedia.

V'è da precisare che l'ordine di impostazione dei byte in un file .bmp è little-endian.

Analisi del blocco dei pixel che compongono l'imagine

Prenderemo in considerazione un file .bmp a colori con risoluzione a 24 bit (quindi il colore di ogni pixel viene definito da 3 byte. Il che significa che il pixel stesso è definito da 3 byte). Come abbiamo già visto, i dati specifici (3 byte) riguardanti il colore di ciascun pixel, costituente l'immagine, sono custoditi nel terzo blocco del file.
Ciascun gruppo di 3 byte definisce l'altezza (Height) dell'immagine, o - se vogliamo dire - una colonna di pixel. L'insieme dei gruppi di 3 byte, che definiscono i colori dei pixel, formano la dimensione della lunghezza (Width) in pixel dell'immagine, o - se vogliamo dire - una riga.
Il numero dei dati relativi ai colori dei pixel di ciascuna riga di pixel deve essere sempre uguale ad un numero multiplo di 4. In caso contrario si aggiungono alla riga dei byte dei colori tanti byte zero quanti ne mancano per raggiungere il numero più prossimo multiplo di 4.
Prendiamo come semplice esempio un file di immagine in formato BMP composto da 3 pixel in lunghezza (tre colonne) e da 3 pixel in altezza (tre righe). Tutti i byte hanno valore FF, ad indicare che l'immagine è completamente di colore bianco. Ogni riga che compone il reticolo dell'immagine, dunque, sarà inizialmente formata da 9 byte (3 byte * 3 pixel). Ma 9 non è un multiplo di 4, e pertanto si dovranno aggiungere tanti byte zero quanti sono necessari per raggiungere il numero più vicino al 9 che sia un multiplo di 4, ossia il 12. Quindi si dovranno aggiungere per ciascuna riga di pixel ben 3 byte di valore zero.
Così la struttura di tale blocco in questo esempio sarà il seguente:

         |----------9 byte--------|
.........FF FF FF FF FF FF FF FF FF 00 00 00 FF FF
FF FF FF FF FF FF FF 00 00 00 FF FF FF FF FF FF FF
FF FF 00 00 00 

Questa regola vale anche nel caso di un'immagine rettangolare, poiché essa si applica soltanto all'insieme dei gruppi di 3 byte che impostano il colore dei relativi pixel e che compogono una riga, ossia la lunghezza (width) in pixel della immagine.