BMP – (Bitmap) képek tárolására használt fájlformátum.
Angol szóösszetétel, melynek jelentése bittérkép.
Ugyanerre a formátumra esetlegesen mint DIB (Device Independent Bitmap, eszközfüggetlen bittérkép) is hivatkozhatnak.
Mind a két formátumot a Microsoft dolgozta ki.
A BMP fájlok három – vagy ha van paletta, négy – elkülöníthető részből szerveződnek:
Fájlfejléc
|
A fájlra vonatkozó alapvető adatokat tárolja.
|
Információs fejléc
|
Az eltárolt kép jellemzőit írja le (felbontás, színmélység stb.)
|
Paletta (ha van)
|
Az eltárolt kép által használt színek RGB kódjait sorolja fel.
|
Bittérkép
|
A kép tényleges tárolási helye, ahol képpontról képpontra jegyzik fel azok színeit.
|
Fájlfejléc (14 byte)
A fejlécben tárolt számok mind növekvő bájtsorrendben (Little-endian) tárolódnak.
Kezdés
|
Méret
|
Elnevezés
|
Leírás
|
0
|
2 byte
|
szignatúra
|
=19778. A képkezelő alkalmazások ezen két bájt alapján azonosítják be a BMP formátumot. Az első bájton a B (66), a második bájton az M (77) ASCII-kódját helyezik el (bitmap), és ezeknek az átváltásából adódik a 19778-as szám (66+256×77).
|
2
|
4 byte
|
fájlméret
|
A fájl mérete (bájtban).
|
6
|
4 byte
|
szabad terület
|
=0. Egyes képszerkesztő, illetve -előállító szoftverek saját bejegyzést helyezhetnek itt el.
|
10
|
4 byte
|
bittérkép kezdőcíme
|
Megadja, hogy hányadik bájttól kezdődik a bittérkép leírása a fájlon belül (az első bájt sorszáma a 0-s). Ha nincsen paletta, ez mindig 54.
|
Kezdés
|
Méret
|
Elnevezés
|
Leírás
|
14
|
4 byte
|
információs fejléc mérete
|
Megadja az információs fejléc méretét (=40).
|
18
|
4 byte
|
szélesség
|
A kép szélessége (pixelben).
|
22
|
4 byte
|
magasság
|
A kép magassága (pixelben).
|
26
|
2 byte
|
megjelenítés
|
=1. (A kimeneti perifériára – monitor, nyomtató – vonatkozó állandó érték. Nincsen gyakorlati jelentősége.)
|
28
|
2 byte
|
színmélység
|
Megadja, hogy a bittérképben hány bit vonatkozik egyetlen képpont színére. Jellemző értékei:
1: 1 bites színindexek (kettő szín);
4: 4 bites színindexek (legfeljebb 16 szín);
8: 8 bites színindexek (legfeljebb 256 szín);
24: 24 bites RGB színkódok (TrueColor, maximálisan 16777216 szín).
|
30
|
4 byte
|
tömörítés
|
A bittérképen alkalmazott tömörítés típusát jelzi.
0: nincsen tömörítés,
1: 8 bites szakaszhossz-tömörítés (RLE8),
2: 4 bites szakaszhossz-tömörítés (RLE4).
A gyakorlatban ezeket szinte soha nem használják, mert legfeljebb 10-15%-os méretcsökkenés érhető el velük.
|
34
|
4 byte
|
bittérkép mérete
|
=0, ha nincsen tömörítés, különben a bittérkép mérete (bájtban).
|
38
|
4 byte
|
vízszintes felbontás
|
A kép vízszintes felbontása (pixel/méter-ben); nyomtatásnál praktikus érték.
|
42
|
4 byte
|
függőleges felbontás
|
A kép függőleges felbontása (pixel/méter-ben); nyomtatásnál praktikus érték.
|
46
|
4 byte
|
paletta-színek
|
A palettában definiált színek száma (=0, ha nincs paletta). Akkor is 0, ha a paletta színeinek száma egyenlő a maximális színek számával a színindexes formában.
|
50
|
4 byte
|
használt színek
|
Megadja, hogy a paletta színei közül hányat használ fel a bittérkép. Szinte mindig megegyezik az előbbi értékkel. (És 0 az értéke, ha nincs paletta).
|
Paletta (paletta-színek×4 byte)
Paletta akkor szerepel a fájlban, ha a színmélység legfeljebb 8 bit/pixel (vagyis ha a bittérkép nem RGB színkódokat, hanem színindexeket tartalmaz).
Ha van paletta, akkor a definiált színek számaszor ismétlődik a következő 4 bájt.
Méret
|
Elnevezés
|
Leírás
|
1 byte
|
kék intenzitás (B)
|
0..255 közötti érték
|
1 byte
|
zöld intenzitás (G)
|
0..255 közötti érték
|
1 byte
|
piros intenzitás (R)
|
0..255 közötti érték
|
1 byte
|
szabad terület
|
=0. Egyes képszerkesztő, illetve -előállító szoftverek saját bejegyzést helyezhetnek itt el.
|
Bittérkép
A bittérkép a kép képpontjait sorfolytonosan tárolja, ami alapvetően kétféleképpen történhet.
Ha a színmélység 8, vagy nála kisebb, akkor színindexeket sorol fel, amelyek a paletta színeire mutatnak (a paletta első színe kapja a 0-s indexet). Minden színindex egy képpontot ír le.
Ha a színmélység 24 bites, akkor RGB színkódokat sorol fel, és ilyenkor nincsen a fájlban paletta. Minden (3×8 bites) RGB színkód egy-egy képpontot ír le. Bár a színindexes bittérkép csak kevesebb színt különböztethet meg, mérete jóval kisebb az RGB színkódosénál, hiszen egy képpont nem 24, csak 8, 4, 2 vagy 1 bitet foglal el (természetesen, egy bittérképen belül csak egyféle hosszúságú színindexeket használnak).
A bittérkép további jellemzői:
- Az RGB számhármasokban (mind a bittérképben, mind a palettában) B; G; R a sorrend.
- A kép soronként lentről felfelé haladva tárolódik (vagyis a kép legalsó sora kerül a bittérkép legfelső sorába).
- A bittérképen belül a képnek megfelelő sorokat szükség szerint 0-s bitekkel egészítik ki úgy, hogy minden sorhoz néggyel osztható számú bájt tartozzék.