Typy rastrových záhlaví

Rastrový obrázek má čtyři základní typy záhlaví:

Čtyři typy záhlaví rastrového obrázku jsou rozlišeny Velikost člen, což je první DWORD v každé struktuře.

Struktura BITMAPV5HEADER je rozšířená BITMAPV4HEADER struktura, což je rozšířená BITMAPINFOHEADER struktura. BITMAPINFOHEADER a BITMAPCOREHEADER mají pouze Velikost člen společného s jinými strukturami záhlaví bitmapy.

Formát BITMAPCOREHEADER a BITMAPV4HEADER byl nahrazen formáty BITMAPINFOHEADER a BITMAPV5HEADER. BITMAPCOREHEADER a formáty BITMAPV4HEADER jsou prezentovány pro úplnost a zpětnou kompatibilitu.

Formát dib je následující (další informace najdete v tématu Bitmap Storage ):

Barevná tabulka popisuje, jak hodnoty pixelů odpovídají hodnotám barev RGB. RGB je model pro popis barev, které jsou vytvářeny vyzařováním světla.

data profilu odkazují buď na název souboru profilu (propojený profil), nebo na skutečné bity profilu (vložený profil). Formát souboru umístí data profilu na konec souboru. Data profilu se umístí hned za barevnou tabulku (pokud jsou k dispozici). Pokud však funkce obdrží zabalený dib, data profilu přicházejí za bity rastrových obrázků, jako je ve formátu souboru.

Data profilu budou existovat pouze pro struktury BITMAPV5HEADER, kde bV5CSType je PROFILE_LINKED nebo PROFILE_EMBEDDED. Pro funkce, které přijímají zabalené databáze DIB, data profilu přicházejí za rastrovými daty.

Paletované zařízení je jakékoli zařízení, které k přiřazení barev používá palety. Klasickým příkladem paletovaného zařízení je zobrazení běžící v 8bitové barevné hloubkě (tedy 256 barev). Zobrazení v tomto režimu používá malou barevnou tabulku k přiřazení barev k bitmapě. Barvy v rastrovém obrázku jsou přiřazeny k nejbližší barvě v paletě, kterou zařízení používá. Paletované zařízení nevytváří optimální paletu pro zobrazení rastrového obrázku; jednoduše používá cokoli, co je v aktuální paletě. Aplikace zodpovídají za vytvoření palety a jejich výběr do systému. Obecně platí, že rastrové obrázky 16-, 24-a 32 bitů na pixel (bpp) neobsahují barevné tabulky (a.k.a. optimální palety rastrového obrázku); aplikace je v tomto případě zodpovědná za generování optimální palety. Rastrové obrázky 16-, 24-a 32-bpp však mohou obsahovat takové optimální barevné tabulky pro zobrazení na paletovaných zařízeních; v tomto případě aplikace potřebuje vytvořit paletu založenou na barevné tabulce, která se nachází v rastrovém souboru.

Rastrové obrázky, které jsou 1, 4 nebo 8 bpp, musí mít barevnou tabulku s maximální velikostí na základě bpp. Maximální velikost rastrových obrázků 1, 4 a 8 bpp je 2 až k mocnině bpp. Proto má rastrový obrázek 1 bpp maximálně dvě barvy, 4 bpp rastrový obrázek má maximálně 16 barev a 8 bpp rastrový obrázek má maximálně 256 barev.

Rastrové obrázky, které jsou 16-, 24-nebo 32-bpp nevyžadují barevné tabulky, ale mohou je mít k určení barev pro paletizovaná zařízení. Pokud je v tabulce barev 16-, 24-nebo 32-bpp rastrový obrázek, biClrUsed člen určuje velikost barevné tabulky a barevná tabulka musí obsahovat tolik barev. Pokud biClrUsed je nula, neexistuje žádná barevná tabulka.

Červené, zelené a modré bitové pole masky pro BI_BITFIELD rastrové obrázky okamžitě následují BITMAPINFOHEADER, BITMAPV4HEADERa BITMAPV5HEADER struktury. Struktury BITMAPV4HEADER a BITMAPV5HEADER obsahují další členy pro červené, zelené a modré masky následujícím způsobem.

Člen Význam
RedMask Barevná maska, která určuje červenou komponentu každého pixelu, platná pouze v případě, že Komprese člen je nastaven na BI_BITFIELDS.
greenmask Barevná maska, která určuje zelenou komponentu každého pixelu, platná pouze v případě, že je Compression člen nastaven na BI_BITFIELDS.
bluemask Barevná maska, která určuje modrou komponentu každého pixelu, platná pouze v případě, že je Komprese člen nastaven na BI_BITFIELDS.

 

Když biCompression člen BITMAPINFOHEADER je nastaven na BI_BITFIELDS a funkce obdrží argument typu LPBITMAPINFO, barevné masky okamžitě následují za záhlavím. Barevná tabulka, pokud je k dispozici, bude následovat za maskami barev. BITMAPCOREHEADER rastrové obrázky nepodporují barevné masky.

Ve výchozím nastavení jsou rastrová data ve svém formátu dole nahoru. Dole znamená, že první řádek skenování v rastrových datech je poslední řádek skenování, který se má zobrazit. Například 0th pixel 0th scan line of a bitmap data of a 10-pixel by 10-pixel bitmap bude 0th pixel 9th scan line of the displayed or printed image. Rastrové obrázky ve formátu RLE (Run length encoded) a BITMAPCOREHEADER bitmapy nemohou být rastrové obrázky shora dolů. Řádky skenování jsou DWORD zarovnané, s výjimkou rastrových obrázků komprimovaných RLE. Musí být vycpané pro šířky čar skenování v bajtech, které nejsou rovnoměrně dělitelné čtyřmi, s výjimkou komprimovaných rastrových obrázků RLE. Například rastrový obrázek 10× 10 pixelů 24-bpp bude mít na konci každého řádku skenování dva bajty odsazení.