2012-09-09 17 views
8

Sono un novizio in file BMP programmazione e ho controllato questo sito per conoscere intestazione bmp .. http://www.daubnet.com/en/file-format-bmpBitmap dimensioni intestazione del file

sembra che l'intestazione di un file BMP è di 54 byte.

Utilizzando paint, ho creato una semplice immagine 10x10 e l'ho salvata in 24 bit. quindi in base alla semplice matematica, la dimensione del file dovrebbe essere 10 * 10 * 3 + 54 = 354 byte.

ma hex editor e file explorer hanno restituito una dimensione di 374 byte.

Quindi ho una differenza di 20 byte e non so perché.

potresti dirmi perché, per favore?

grazie mille !!

+0

Riempimento per allineamento? Usa 'SizeOf' invece di calcolarlo da solo. (Inoltre, aiuta se si menziona il linguaggio di programmazione che si sta chiedendo, rende molto più facile fornire una risposta.) –

+2

Beh, sta usando MSPaint, non un linguaggio di programmazione :) – nneonneo

+0

@nneonneo: "I'm a newbie in programming bmp files "è la frase di apertura della domanda. –

risposta

10

Le linee in BMP sono riempite fino a multipli di 4 byte.

Senza riempimento, ogni riga è 3 * 10 = 30 byte. Con padding, ogni riga è di 32 byte, quindi i dati dell'immagine hanno una dimensione di 320 byte. Pertanto, la dimensione del file è 54 + 320 = 374 byte.

+1

Ciao, grazie mille per la tua risposta. Questo ha senso ... ma nel mio programma ho una matrice di 10x10 pixel, ogni pixel è RGB. Quindi ho un extra di 20 byte di dati raster da calcolare? Sono un po 'confuso ... grazie ancora per il tuo aiuto! – user1657743

+0

@ user1657743: non devi mettere nulla di specifico nel padding; sono solo dei rifiuti che nessuno (tranne gli steganografi) vedrà. – nneonneo