BMP = BitMaP (Bittérkép)
Az egyik legegyszerűbben használható, (valaha) legnépszerűbb pixeles képformátum. Eredeti kifejlesztő: Microsoft. Eredeti alkalmazási területe: Windows legrégebbi verziótól kezdve számtalan más alkalmazás. Másik elnevezése: DIB (Device-independent Bitmap, azaz forrás-független bittérkép)
A tömörítetlen BMP fájlokban az egyes információk pixelenként, azaz képpontonként vannak tárolva. Gyakorlatilag minden egyes képpontról csak a szín van eltárolva, mivel nincs is más lényeges adat. Ez a szín lehet 1, 4, 8, 16, 24 vagy 32 bites. Az 1-8 bites tárolás esetén lehetséges a szürke-árnyalatú megjelenítés is. Ugyancsak az 1-8 bites színek esetén maguk pixeleket leíró bájtok nem színt tartalmaznak, hanem egyszerűen csak a BMP fájlban tárolt paletta egyes elemeire mutatnak. A 24 bites megjelenésnél például már minden egyes pixel információját 3 bájt adja meg az RGB-kódoknak megfelelően. A formátum lehetőséget nyújt arra is, hogy a 24 bites tárolás mellett a negyedik (ún. alfa-csatornában) kódolják a 24 bitről 32 bitre konvertáló kódokat.
A tömörítetlen formátum óriási hátránya, hogy a mérete hatalmas.
A BMP fájlok részletei:
-
Fájlfejléc (10 bájt): Alapadatok
-
Bitmap információs fájlfejléc (40 bájt): A kép alapvető jellemzői
-
Paletta – nem kötelező (paletta-színek száma * 4 bájt): a tárolt RGB-kódok
-
Bittérkép adatok (sok-sok bájt): A kép tényleges helye.
Fájlfejléc részei: (14 bájt)
Kezdés |
Méret (bájt) |
Leírás |
0 |
2 |
Azonosító (hexadecimális) szám: B (66) és M (77) => BMP a Windows rendszerekben BA: OS/2 Bitmap kép CI: OS/2 színes ikon CP: OS/2 színes mutató IC: OS/2 ikon PT: OS/2 mutató |
2 |
4 |
Fájlméret (bájtban) |
6 |
2*2 |
Szabad terület, de egyes képszerkesztő programok használhatják. |
10 |
4 |
A bittérkép kezdőcíme (eltolási érték). Gyakorlatilag azt mutatja meg, hogy hol kezdődik maga a kép. Ha nincsen paletta, akkor ez az érték: 54. |
Bitmap információs fejléc: (40 bájt)
Ez tárolja a helyes megjelenéshez szükséges információkat, melyeket az egyes alkalmazások tudnak hasznosítani. Ez a blokk a Windows és az OS/2 számos variánsa által alkalmazott egyéb információt is tartalmaz, bár ezek szükségességéről a vélemények megoszlanak. Valamennyi információ DWORD típusú blokkban van, így a fejléc adatait könnyebb tárolni, illetve az egyes alkalmazások számára a kép helyes méretezését is könnyebb kiszámolni. A különböző variánsok azért is jöttek létre, mert a Microsoft több alkalommal is ezen fejlécet alkalmazta a DIB formátumnál. A fejléc kibővülésének másik oka a visszafelé való kompatibilitás, azaz az újabb program- és BMP-variánsok támogatják a régebbiek megjelenését. Részletesebb információt az alábbi táblázat tartalmaz:
Méret |
Fejléc |
Azonosító |
Támogatott grafikus megjelenés |
40 |
Windows V3 |
BITMAPINFOHEADER |
Minden 3.0 feletti Windows verzió |
12 |
OS/2 V1 |
BITMAPCOREHEADER |
OS/2, valamint 3.0 és minden e feletti Windows verzió |
64 |
OS/2 V2 |
|
|
108 |
Windows V4 |
BITMAPV4HEADER |
95/NT4 és minden feletti Windows verzió |
124 |
Windows V5 |
BITMAPV5HEADER |
98/2000 és minden feletti Windows verzió |
A kompatibilitás miatt a legtöbb verzió használj az idősebb, mára erősen elavult DIB-fejlécet is, bár ezt leginkább az OS/2-ben használták fel, ami felett már erősen elmúlt az idő. A legtöbb értéket előjel nélküli egészként tárolja a rendszer.
Eltolás (hexadecimális) |
Méret (byte) |
Leírás |
0E |
4 |
A fejléc ezen részének mérete (40 bájt) |
12 |
4 |
Kép szélessége képpontban |
16 |
4 |
Kép magassága képpontban |
1A |
2 |
Használni kívánt színek száma. Értéke kötelezően: 1. |
1C |
2 |
Képpontonként használt bitek száma, ami a kép színmélységét írja le. Jellemző értékei: 1, 4, 8, 16, 24 és 32. |
1E |
4 |
A használt tömörítési eljárás. Lásd a következő táblázatot! |
22 |
4 |
A kép mérete. Ez a nyers bittérképes adat és nem szabad összekeverni a kép valódi méretével. |
26 |
4 |
A kép vízszintes felbontása (képpont méterenként) |
2A |
4 |
A kép függőleges felbontása (képpont méterenként) |
2E |
4 |
A palettán lévő színek száma vagy 0. (Alapértelmezés: 2n). |
32 |
4 |
A felhasznált fontos színek száma vagy 0, amikor minden szín fontos. Általában figyelmen kívül kell hagyni. |
A tömörítési mező ($1E-$21) a következő értékeket veheti fel:
Érték |
Azonosító |
Tömörítési eljárás |
Megjegyzés |
0 |
BI_RGB |
nincs |
Leggyakoribb érték |
1 |
BI_RLE8 |
RLE 8bit/képpont |
Csak 8 bit/képpontos színmélységnél használható |
2 |
BI_RLE4 |
RLE 4bit/képpont |
Csak 4 bit/képpontos színmélységnél használható |
3 |
BI_BITFIELDS |
Bittérkép |
Csak 16 és 32 bit/képpontos színmélységnél használható. |
4 |
BI_JPEG |
JPEG |
JPEG kép. |
5 |
BI_PNG |
PNG |
PNG kép. |
Megjegyzés: RLE (Run-length encoding): az egyik legegyszerűbb adattömörítési eljárás, melynek segítségével a kép méretét csökkenteni lehet. Tulajdonképpen sorra veszi az egyes képinformációkat és minden információ előtt kiírja, hogy abból a színből hány pixel következik, amint ezt a lenti példa is mutatja:
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW
Ennek tömörítése RLE eljárás segítségével: 12W1B12W3B24W1B14W.
Megjegyzés: a BI_JPEG és a BI_PNG azonosítók csak a nyomtatók számára vannak fenntartva, mivel a képernyős megjelenítés számára ezeket az értékeket nem használja a rendszer.
Paletta:
A BMP-fájl palettája, ha egyáltalán található a fájlban, mindig a fejléc 3. részében van. A paletta gyakorlatilag simán felsorolja a képben használt színek azonosítóját. A kép minden egyes színét leírja pár bittel (1, 4 vagy 8), amely egyetlen sorként szerepel a paletta táblázatában. Az adott képet megjelenítő alkalmazás számára ezen táblázat jelenti, hogy az egyes képpontot konkrétan milyen színként is kell megjeleníteni a képernyőn.
A DIB mindig az RGB modellt használja. Itt az egyes képpontokat mindig a három elsődleges színből keveri ki a rendszer: R = Red = Vörös; G = Green = Zöld és B = Blue = Kék. Minden egyes szín 0-tól 255-ig vehet fel értéket.
A paletta bejegyzéseinek száma csak kis mértékben korlátozott, mivel létezik egy elméleti határ (2n), de ezt nem kell teljes mértékben kitölteni, kivétel csak az OS/2 V1 volt, ahol a teljes palettát kellett mindig tárolni. Minden bejegyzés 4 bájtot tartalmaz, kivéve az OS/2 V1 három bájtos bejegyzései. Az első három bájt mindig az RGB-kódot tartalmazza, míg a negyedik bájt nincsen kihasználva, így az mindig 0-t tartalmaz, hacsak egyáltalán nincsen ilyen (OS/2 V1).
Mint az előzőekben szó volt róla, a paletta egyáltalán nem használható a 16 bites színmélységű vagy ennél nagyobb képeknél.
Bittérkép adatok:
Ez a blokk írja le ténylegesen a képet magát képpontról képpontra. A tárolási sorrend kicsit furcsa, mivel az információt a bal alsó saroktól kezdve tárolja, minden egyes sorban balról jobbra megy, majd 1-1 sort emelkedik. Tömörítetlen Windows bittérképet lehet tárolni a felső sortól az alsóig sorba rakva, ha a magasság értéke negatív.
Az eredeti DIB formátumnál még csak 4 lehetséges képpontonkénti bitérték volt: 1, 4, 8 és 24. Minden esetben a pixel leírásához használt értéket kiterjesztik 32 bitre (4 bájtra), feltöltve további fel nem használt bitekkel, amelyek nem feltétlenül zérus értékűek. Így sikerül elérni, hogy a következő értékes bejegyzés, azaz képpont-információs csak a következő 4 bájtos blokkban kezdődjön. Ezáltal a kép feldolgozhatósága is nagyban megnő!
-
Egy-bites színmélységnél (fekete-fehér képek) az értéket minden bitben tárolják. A legfontosabb bit a legelső, ahol a tényleges színérték tárolódik.
-
4 bites színmélységnél (16 szín) 2 képpontot tárolnak 1 bájtban. Minden egyes színinformáció a palettára való utalást jelent.
-
8 bites színmélységnél (256 szín) minden képpont 1 bájton tárolódik. Minden egyes bájt a paletta egy-egy sorára történő bejegyzést tartalmaz.
-
RGB-színeknél (24 bites színmélység) a képpontokat a hagyományos RGB-színskála szerint tárolják le: minden egyes képpont szín-információját 3 bájt tárolja.
ICO = Windows Ikon fájl
Ez az a fájlformátum, amit gyakorlatilag minden Windows-alkalmazó ismer, hiszen ezek a kis rajzocskák (olykor képek) mutatják az adott fájl típusát, illetve a felhasznált programra jellemző grafikát. Nagyfokú rokonságot mutat a CUR formátummal, amely az egérkurzor megjelenéséért felelős. Különbségük mindössze az azonosító bájtban és a fejléc bizonyos részeiben van.
Az ICO fájlok egy vagy több képet tartalmaznak, akár többféle méretben, illetve színmélységben is.
Az IANA által hivatalosan regisztrált típusazonosító(MIME): image/vnd.microsoft.icon. Ezen bejegyzés előtt más variánsok is voltak, például: image/x-icon. További variánsok: image/ico, image/icon, text/ico, és application/ico. Sok alkalmazás és számos webszerveren nem jelent meg helyesen az ilyen típusú fájl, így helyettük az alapértelmezett text/html, illetve text/plain jelenik meg.
A régebbi Windows verziók eredetileg 32x32-es méretű, 16 színű ikonfájlokat jelenítettek meg. A Windows XP megjelenése óta 1x1-től 255x255-ös méretig bármekkora ikonfájlokat meg lehet jeleníteni, beleértve a nem-négyzet alakúakat is. Színmélység lehet:4, 8, 16 vagy 24 bit egyaránt. Általában egy ICO fájl egyaránt tartalmaz egy 16x16-os „kisméretű” és egy 32x32-es „nagyméretű” variánst, így a Windows Intézőben, illetve a Start menüben a megfelelő beállításokkal mindkét variáns megjeleníthető.
Maga az ikon képfájl mindig 2 bittérképet tartalmaz: egy AND (ÉS), illetve egy XOR (kizáró vagy) variánst. Az AND bittérkép 1 bit/képpont méretű és csupán azt írja le, hogy a kép mely területeire vetődik árnyék. A másik, XOR bittérkép csak ezután alkalmazza a (nevét adó) XOR műveletet. Ez nemcsak az átlátszó területeket teszi lehetővé, hanem például a háttér megfordítását és egyéb megjelenítési effektusokat is.
A Windows XP-től fogva minden operációs rendszer támogatja a 32 bites színmélységű képeket, beleértve ebbe az átlátszóságot is, valamint az árnyékot és a lekerekített széleket. Bár az interneten nem mindig jelennek meg a 32 bites képek, ezért a régebbi Windows-ok a 32 bites megjelenést leegyszerűsítik 24 bitesre, mivel így az összes kép egyszerűen megjeleníthető; de az újabbaknál ez már nem probléma. Az 1.0-ás Windows már támogatta a 32x32-es monokróm ikonokat, ám a 16 színű verzió is már a 3.0-tól támogatott. Bár a Windows XP képes volt a 96x96-os ICO fájlok megjelenítésére is, de maga Microsoft ajánlása szerint is legfeljebb 48x48-as kép használata volt ajánlatos.
A Windows Vista és utáni operációs rendszerek alapértelmezetten is támogatja a 256x256 képméretű ikonfájlokat, valamint a PNG tömörítést, bár ez utóbbi nem feltétlenül szükséges. A PNG formátum alapértelmezésben lehetővé teszi az átlátszóságot, de nem tartalmazza sem az AND, sem a XOR bittérképes variánst. Javasolt megoldás: az összes 256x256-os ikont ICO kiterjesztéssel érdemes eltárolni megfelelő PNG tömörítéssel, így a méretét le lehet csökkenteni. A modernebb Windows-ok grafikus megoldásaival képesek ráközelíteni (zoomolni) az egyes ikonokra, így az addigiaknál több formátumot és megjelenítést tesz lehetővé.
Magukat az ICO fájlokat számos program használja, illetve teszi szerkeszthetővé, például a CorelDraw, illetve az IrfanView is.
Fontos megjegyezni, hogy a „favicon.ico” fájl kitüntetett jelentőséggel bírt, mivel a böngésző ezt a fájlt teszi ki a fejlécébe, mint a weblaphoz tartozó ikont. Ez az ikon általában a weblap gyökerében található, de előfordulhat, hogy máshová "rejtette el" a weblap szerkesztője.
Érdekesség, hogy egyes alkalmazásokkal lehetséges animált ikonokat is létrehozni! Készítésének legegyszerűbb menete: darabonként az egyes fájlokat létre kell hozni valamilyen grafikai alkalmazással (pl.: Photoshop, CorelDraw, GIMP, IrfanView), majd egy GIF készítővel (pl.: GIF Movie Gear) összefűzni AVI fájlként. Másik lehetőségként rá lehet keresni direkt animált GIF készítő oldalakra. Ilyen pl. a https://ezgif.com/maker is, ahol fel kell tölteni az egymás utáni állapotokat, majd az oldal ezt összefűzi.
Könyvtár és fájlszerkezet:
Maga az ICO fájl egy hagyományos eljárással csomagolt ikonkönyvtár, tipikusan „New Executable” (Windows alatti futtatható) típussal és ICL kiterjesztéssel látják el. Tartalma lényegében csak az ikonok különböző variánsaira korlátozódik. A fájlszerkezet rövid formában:
Ikon fejléc |
Az ICO típus azonosítója |
Könyvtár [1..n] |
Minden tárolt fájl általános információi. |
1. ikon |
Az első tárolt fájl információi AND/XOR bittérképes formában (régi DIB verzió) vagy az új PNG eljárás szerint. |
... |
További ikonok. |
n. ikon |
Az utolsó tárolt ikonfájl. |
Fejléc részletei:
Eltolás: |
Méret (bájt) |
Leírás |
0 |
2 |
Fenntartva. Mindig 0. |
2 |
2 |
Típusleírás. 1: ICO (ikon fájlok); 2: CUR (kurzor fájlok) |
4 |
2 |
Számláló. A beépített képek száma. |
Könyvtár:
Eltolás: |
Méret (bájt) |
Leírás |
0 |
1 |
Szélesség képpontban. 0 jelentése: 256 pixel. |
1 |
1 |
Magasság képpontban. 0 jelentése: 256 pixel. |
2 |
1 |
Színek száma. 0 jelentése: több, mint 256 szín. |
3 |
1 |
Fenntartott. Mindig 0. (Gyakorlatban a .NET alkalmazásoknál ez lehet 255 is.) |
4 |
2 |
ICO formátumnál: színskálák (kötelezően: 0 vagy 1) CUR formátumnál: kérdéses (X hotspot) |
6 |
2 |
ICO: képpontonkénti bitek száma CUR formátumnál: kérdéses (Y hotspot) |
8 |
4 |
A bittérkép mérete bájtokban. |
12 |
4 |
Eltolási érték a bittérképes adatfájlban |
Windows Vista és feletti felhasználók számára ajánlott ikonméretek: (Más méretek is lehetségesek, de ezeket ajánlja használatra a Microsoft)
Méret (képpont) |
Színmélység (bit) |
Tömörítés |
256x256 |
32 |
PNG |
48x48 |
32 |
nincs |
48x48 |
8 |
nincs |
48x48 |
4 |
nincs |
32x32 |
32 |
nincs |
32x32 |
8 |
nincs |
32x32 |
4 |
nincs |
16x16 |
32 |
nincs |
16x16 |
8 |
nincs |
16x16 |
4 |
nincs |
© TFeri.hu, 2009
Felújítva: 2016. és 2020.