aspose.info
HU

BMP - Képfájl formátum

Frissítve

Mi az a BMP fájl?

A .BMP kiterjesztésű fájlok olyan bittérképes képfájlokat képviselnek, amelyeket bittérképes digitális képek tárolására használnak. Ezek a képek függetlenek a grafikus adaptertől, és eszközfüggetlen bittérkép (DIB) fájlformátumnak is nevezik őket. Ez a függetlenség azt a célt szolgálja, hogy a fájlt több platformon, például Microsoft Windowson és Macen is megnyissa. A BMP fájlformátum kétdimenziós digitális képként képes tárolni az adatokat mind monokróm, mind színes formátumban, különböző színmélységgel.

BMP fájlformátum specifikációi

Az eszközfüggetlen bittérképek segítik az eszközök és alkalmazások közötti bittérképek cseréjét. A fájlformátum folyamatos fejlődése miatt a fejlécekben található információk a Bitmap verziójától függően eltérőek lehetnek. Egyetlen bittérképes fájl meghatározott sorrendben rögzített és változó méretű struktúrákból áll.

A Bitmap fájl struktúrái a következő sorrendben vannak elrendezve:

StruktúraOpcionálisMéretCél
FájlfejlécNem14Általános információk tárolására a bittérképes képfájlról
DIB fejlécNemRögzített méretűRészletes információk tárolása a bittérképes képről és a pixelformátum meghatározása
Extra bitmaszkokIgen12 vagy 16 bájtA pixelformátum meghatározása
SzínpalettaFélig választhatóVáltozó méretűA bittérképes képadatok által használt színek meghatározása
Gap1IgenVáltozó méretűStruktúra-igazítás
Pixel ArrayNoVariable-sizeA pixelformátumot a DIB fejléc vagy az Extra bitmaszkok határozzák meg.
Gap2IgenVáltozó méretűStruktúra-igazítás
ICC Color profileYesVariable-sizeA színprofil meghatározása a színkezeléshez

Amikor egy bittérképes kép betöltődik a memóriába, az DIB-struktúrává válik, amelyet a Windows a GDI API-ján keresztül használ. A Fájl fejléc nem része ennek az adatstruktúrának. A szín 16 bites bejegyzésekből is állhat, amelyek explicit RGB színdefiníciók helyett indexeket alkotnak az éppen hivatkozott palettához. Nézzünk meg néhányat ezek közül részletesen, különösen a fejléceket.

Bittérképes fájl fejléce

A bittérképes fájlfejléc hasonló a fájl azonosítására használt többi fájlfejléchez. Mivel a BMP fájlformátumnak különböző változatai léteznek, a BMP fájlformátum első 2 bájtja a „B” karakter, majd az „M” karakter ASCII kódolásban. Minden egész érték kis-végi formátumban van tárolva.

Eltolás hatszögEltolás decMéretCél
0002 bájtA BMP és DIB fájl azonosítására használt fejléc mező 0x42 0x4D hexadecimális formában, ugyanaz, mint a BM az ASCII-ben. Követheti a lehetséges értékeket.* BM – Windows 3.1x, 95, NT, … stb. * BA – OS/2 struct bitmap tömb * CI – OS/2 struct színes ikon * CP – OS/2 állandó színmutató * IC – OS/2 struktúra ikon * PT – OS/2 mutató
0224 bájtA BMP fájl mérete bájtban
0662 bájtFenntartva; A tényleges érték a képet létrehozó alkalmazástól függ
0882 bájtFenntartva; A tényleges érték a képet létrehozó alkalmazástól függ
0A104 bájtAnnak a bájtnak az eltolása, azaz kezdőcíme, ahol a bittérképes képadatok (pixeltömb) találhatók.

DIB fejléc (bittérképes információs fejléc)

A képre vonatkozó részletes információkat ez a fejléc képviseli. Ezen információk alapján a rendszer meghatározza azt az alkalmazást, amely a kép képernyőn való megjelenítésére szolgál. Minden ilyen fejléc tartalmaz egy DWORD (32 bites) mezőt, amely megadja a méretüket, így az alkalmazás könnyen meghatározhatja a képben használt fejlécet. Ez alapvetően annak tudható be, hogy a DIB formátum több kiterjesztésen esett át. Az alábbiakban látható a DIB fejléc felsorolt mezőkkel.

Szín paletta

A BMP színpaletta olyan struktúrák tömbje, amelyek meghatározzák a megjelenítő eszköz színpalettáján szereplő egyes színek RGB intenzitásértékeit. A bittérképes adatok minden képpontja egyetlen, indexként használt értéket tárol a színpalettán. Az adott indexen lévő elemben tárolt színinformáció határozza meg az adott pixel színét. A bittérképes fájlok színének elérhetősége az alábbiak szerint változik:

  • Egy, 4 és 8 bites – várhatóan mindig tartalmaz egy színpalettát
  • Tizenhat, 24 és 32 bites – soha nem tartalmaz színpalettát
  • Tizenhat és 32 bites BMP-fájlok – a színpaletta helyett bitmezőmaszkértékeket tartalmaznak

Pixel tárhely

A bittérképes pixeleket a rendszer sorokba csomagolt bitekként tárolja, ahol az egyes sorok méretét kitöltéssel felfelé kerekítik 4 bájt többszörösére (32 bites duplaszó). A kép pixeleinek tárolásához szükséges bájtok teljes mennyisége nem számítható ki közvetlenül a bitek megszámlálásával. Mivel kitöltésről van szó, az egyes sorok méretét 4 bájt többszörösére kell kerekíteni. Kitöltő bájtokat (nem feltétlenül 0-t) kell a sorok végéhez hozzáfűzni, hogy a sorok hossza négy bájt többszörösére nőjön. Amikor a pixeltömb betöltődik a memóriába, minden sornak egy olyan memóriacímen kell kezdődnie, amely 4 többszöröse.

A képet valójában a pixeltömb 32 bites duplaszó-ábrázolása írja le. A pixelek tárolása általában “alulról felfelé”, a bal alsó sarokban kezdődik, balról jobbra haladva, majd soronként alulról felfelé haladva a képen. A pixelformátumok és következményeik az alábbiak:

  • Az 1 bit/pixel (1 bpp) formátum 2 különböző színt támogat (például: fekete és fehér).
  • A 2 bit/pixel (2bpp) formátum 4 különböző színt támogat, és 1 bájtonként 4 pixelt tárol, a bal szélső pixel pedig a két legjelentősebb bitben található. Minden pixelérték egy 2 bites index egy legfeljebb 4 színből álló táblázatba.
  • A 4 bit/pixel (4bpp) formátum 16 különböző színt támogat, és 2 képpontot tárol 1 bájtonként, a bal szélső pixel pedig a jelentősebb nibble-ben van. Minden pixelérték egy 4 bites index egy legfeljebb 16 színt tartalmazó táblázatba.
  • A 8 bit/pixel (8bpp) formátum 256 különböző színt támogat, és 1 bájtonként 1 pixelt tárol. Minden bájt egy index egy legfeljebb 256 színt tartalmazó táblázatba.
  • A 16 bit/pixel (16 bpp) formátum 65536 különböző színt támogat, és 1 képpontot tárol 2 bájtos WORD-onként. Minden WORD meghatározhatja a pixel alfa, piros, zöld és kék mintáját.
  • A 24 bites pixel (24 bpp) formátum 16 777 216 különböző színt támogat, és 3 bájtonként 1 pixel értéket tárol. Minden pixelérték meghatározza a pixel vörös, zöld és kék mintáját (RGAX jelöléssel 8.8.8.0.0). Pontosabban a következő sorrendben: kék, zöld és piros (mintánként 8 bit).
  • A 32 bites képpontonkénti (32 bpp) formátum 4 294 967 296 különböző színt támogat, és 1 pixelt tárol 4 bájtos duplaszónként. Mindegyik duplaszó meghatározhatja a pixel alfa, piros, zöld és kék mintáját.

Referenciák

Lásd még