A 16 színű bmp file szerkezete

 4 bit színmélységgel mentsünk!!

Szerkesztés--> Fájlba másolással 

Adott méretű területet mentsünk

"NAGY MÉRET" nagyítást használjunk

Az állomány felépítése


1. A fájlleíró rész (14 bájtos)

 típus:                 2 bájt A BMP típusa (BM)
 méret:               4        fizikai állomány mérete
 nem használt:     4       Későbbi fejlesztéseknek (0000h)
 offset:                4       A képpontok adatainak offsetje:14+(40+64)=118



2. Az információs rész (40+64 bájtos)

Információk ( 40 bájt)
méret:               4 bájt   (40)
szélesség:          4          A kép szélessége képpontban
magasság:         4          A kép magassága képpontban
sikok                2          (1)
bitszam             2          Színmélység ( 4)
tömörítés:         4          (0)
képméret          4          A képpontok leírására szolgáló bájtok száma.
                                    NEM MINDIG magasság*szélesség*4 bit/8.
xfelbontás         4          pixel/méter-ben (3780)
yfelbontás         4          pixel/méter-ben (3780)
használtszínek   4          (0)
fontosszínek     4           (0)

Ha összeadjuk, akkor megkapjuk valóban a 40 bájtot. (9*4+2*2)
 

Színtábla (64 bájtos)

Mivel egy síkunk van, egy színtábla van csak. A tábla 16*4=64 bájtnyi helyet foglal
Ha egy képpont értéke  5, az akkor azt jelenti, hogy ezen képpont színe megegyezik a tábla 5. sorában megadott színnel

0. sora is van a színtáblának!

Bájtfordított sorrend!

3. A képleíró rész

Sorfolytonosan a balalsó saroktól kezdve
Nézzük pl. a következő képet: (Itt van BMP állományban...)
 

Ez egy 8×8-as kép. Nézzük meg a forrását bájtonként:



 
42 4D 96 00 00 00 00 00    00 00 76 00 00 00 28 00      az utolsó a sorban a 16. bájt
00 00 08 00 00 00 08 00    00 00 01 00 04 00 00 00      32.
00 00 20 00 00 00 C4 0E    00 00 C4 0E 00 00 00 00      48.
00 00 00 00 00 00 00 00    00 00 00 00 80 00 00 80      64.
00 00 00 80 80 00 80 00    00 00 80 00 80 00 80 80      80.
00 00 C0 C0 C0 00 80 80    80 00 00 00 FF 00 00 FF      96.
00 00 00 FF FF 00 FF 00    00 00 FF 00 FF 00 FF FF     112.
00 00 FF FF FF 00 09 99    99 99 90 00 00 09 90 99     128.
99 09 90 99 99 09 90 99    99 09 90 99 99 09 90 00     144.
00 09 99 99 99 99                                      az utolsó a sorban a 150. bájt
A lilával jelzett bájtok alkotják a fájlleíró részt, a narancssárgával jelzettek az információs rész 2.a részét, a zölddel jelzettek az információs rész 2.b részét, azaz a színtáblát. A kékkel jelzettek alkotják magát a képet. Nézzük meg a jelentéseiket:


Fájlleíró rész:

Bájtok           :Érték, jelentése
42 4D      : "BM", tipusa
96 00 00 00:  150, mérete
00 00 00 00:    0, fenntartott
76 00 00 00:  118, inf. ebből



Információs rész
2.a: Információk a képről

Bájtok           :Érték   (jelentése)
28 00 00 00:  40, méret
08 00 00 00:   8, magasság
08 00 00 00:   8, szélesség
01 00      :   1, síkok száma
04 00      :   4, színmélység
00 00 00 00:   0, tömörítés fajtája
20 00 00 00:  32, képpontok által elfoglalt bájtok száma
C4 0E 00 00:3780, pixel/méter vízszintes felbontás
C4 0E 00 00:3780, pixel/méter vízszintes felbontás
00 00 00 00:   0, színek száma
00 00 00 00:   0, fontosszínek száma



Információs rész
2.b: A színtábla

Bájtok         :Érték   (jelentése)
A 4. bájt nincs benne a táblázatban, hiszen nem használjuk Figyeljük meg a byte-fordított sorrendet!
Bájtok BLUE/KÉK GREEN/ZÖLD RED/PIROS
00 00 00 00 0 0 0
00 00 80 00 0 0 108
00 80 00 00 0 108 0
00 80 80 00 0 108 108
80 00 00 00 108 0 0
80 00 80 00 108 0 108
80 80 00 00  108 108 0
C0 C0 C0 00 192 192 192
80 80  80 00 108 108 108
00 00 FF 00 0 0 255
00 FF 00 00 0 255 0
00 FF FF 00 0 255 255
FF 00  00 00 255 0 0
FF 00 FF 00 255 0 255
FF FF 00 00 255 255 0
FF FF FF 00 255 255 255


A képleíró rész

A bájtokat itt sorfolytonosan írjuk le, hogy látszódjon a kép alakja:

0 9 9 9 9 9 9 9   Egy sorba 4 bájt került, egy számjegy 4 bitet reprezentál,
9 0 0 0 0 0 0 9   így jön ki a 8×8 képpont. A 9-es jelenti a pirosat, a 0 a
9 0 9 9 9 9 0 9   feketét, mert a színtábla 9. sorában a piros szín kódja van,
9 0 9 9 9 9 0 9   a 0. sorában pedig a fekete szín kódja.
9 0 9 9 9 9 0 9
9 0 9 9 9 9 0 9
9 0 0 0 0 0 0 9
9 9 9 9 9 9 9 9
 

9 9 9 9 9 9 9 9
9 0 0 0 0 0 0 9
9 0 9 9 9 9 0 9
9 0 9 9 9 9 0 Talán így láthatóbb színesben, s a sorokat fordított sorrendben írva...
9 0 9 9 9 9 0 9
9 0 9 9 9 9 0 9
9 0 0 0 0 0 0 9
0 9 9 9 9 9 9 9

Csak akkor, ha 8-cal osztható az egysorban lévő képpontok száma, különben annyi nulla értékű félbájtot rak utána, hogy osztható legyen.
  S itt van BMP-ben is

  42 4D 9A 00 00 00 00 00  00 00 76 00 00 00 28 00
 00 00 07 00 00 00 09 00  00 00 01 00 04 00 00 00
 00 00 24 00 00 00 C4 0E  00 00 C4 0E 00 00 00 00
 00 00 00 00 00 00 00 00  00 00 00 00 80 00 00 80
 00 00 00 80 80 00 80 00  00 00 80 00 80 00 80 80
 00 00 C0 C0 C0 00 80 80  80 00 00 00 FF 00 00 FF
 00 00 00 FF FF 00 FF 00  00 00 FF 00 FF 00 FF FF
 00 00 FF FF FF 00 22 22  22 20 C2 22 22 C0 C2 22
 22 C0 2C CC CC 20 2C 22  2C 20 22 C2 C2 20 22 C2
 C2 20 22 2C 22 20 22 22  22 20
 

2 2 2 2 2 2 2 0 Látható, hogy a pirossal jelzett nullák nem vesznek részt a képalkotásban
2 2 2 C 2 2 2 0
2 2 C 2 C 2 2 0
2 2 C 2 C 2 2 0
2 C 2 2 2 C 2 0
2 C C C C C 2 0
C 2 2 2 2 2 C 0
C 2 2 2 2 2 C 0
2 2 2 2 2 2 2 0

A fejlécek:
Fájl jellemzok:
     tipusa:             BM
     fenntartott:         0
     merete:            154 bajt
     inf. ebbol:        118 bajt

Kép jellemzok
     meret:              40 bajt
     magassag:            9 pixel
     szelesseg:           7 pixel
     osszesen:           63 keppont
     sikok:               1 darab
     keppontokkent        4 bit
     szinek szama:       16 db
     tomoritesi kod:      0
     kepmerete:          36 bajt
     vizsz. felb.:     3780 pixel/meter
     fugg.  felb.:     3780 pixel/meter
     hasznalt szinek:     0 db
     fontos szinek:       0 db
     maradek 4 bitek      1 db

Megfigyelhető, hogy a képmérete (36 bájt=72 képpont) nem egyezik az igazi mérettel (63 képpont).