In acest laborator vom examina formatul imagine BMP.
Dupa ce fotografia a fost captata ea este stocata intr-un format digital universal care
permite sa fie transferata la calculator, imprimanta sau TV. Exista o mare varietate de formate
de memorare a imaginii. Dintre cele mai des folosite se pot aminti: BMP, TIFF, EPS, JPG,
PNG, GIF, etc.
BMP (.BMP). In ultimii ani formatul BMP a devenit un standard important ca urmare
a faptului ca este utilizat sub Windows. Fisierele de format BMP se folosesc pentru a stoca
imagini, icon-uri, cursoare, pointeri si poate lista nu este completa. In continuare ne vom
focaliza atentia asupra formatului BMP pentru imagine.
Structura BMP
Formatul BMP este de uzanta generala astfel incat permite stocarea, intr-un fisier pe
disc, a unei imagini de orice dimensiune. Informatiile despre culoare pot sa varieze de la 1 bit
la 24 de biti. De asemena este suportata codificarea RLE (run length encoding - tehnica de
compresie) sub Windows. In ceea ce priveste modul de stocare, imaginea este inregistrata
linie cu linie pornind de jos in sus. Acest lucru nu prezinta nici o problema atunci cand este
necesara afisarea imaginii pe monitor folosind API-ul Windows. Problema reala apare in
cazul in care trebuie sa ne preocupam direct de datele stocate in fisier, respectiv atunci cand
trebuie sa facem conversia de format sau trebuie sa listam imaginea respectiva la imprimanta.
Un fisier BMP contine urmatoarele structuri de date:
BITMAPFILEHEADER bmfh; (contine informatii despre fisier, nu despre imagine
in sine)
BITMAPINFOHEADER bmih; (contine informatii despre bitmap cum ar fi: dimensiune,
numar de culori, etc)
RGBQUAD aColors[]; (contine tabela de culori)
Sisteme de prelucrare grafica Laborator nr.1
Componentele structurii BMP
In cadrul enumerarii urmatoare am respectat denumirile campurilor asa cum apar ele
in documentatia originala.
Structura BITMAPFILEHEADER este prezentata in tabelul 1.
Tabelul 1 - Structura BITMAPFILEHEADER
Start Dimensiune
(octeti) Nume Valoare
standard Scop
1 2 bfType 19778
Este un camp folosit pentru validarea
fisierului in ceea ce priveste faptul ca este
o imagine BMP. Pentru un fisier BMP
imagine acest camp contine totdeauna
valoarea ,,BM" provenind de la
prescuratarea ,,BitMap". Windows nu
suporta alte valori pentru acest camp pe
cand OS/2 permite existenta a sase valori.
Aceste sase valori indica practic ce
informatii contine fisierul: icon color, icon
mono, pointer mouse color si asa mai
departe.
3 4 bfSize ???? Specifica dimensiunea in octeti a fisierului.
7 2 bfReserved1 0 Neutilizat (trebuie mereu setat la 0).
9 2 bfReserved2 0 Neutilizat (trebuie mereu setat la 0).
11 4 bfOffBits ???? Indica offsetul, in octeti, de la inceputul
fisierului la inceputul bitmap-ului.
Structura BITMAPINFOHEADER este prezentata in tabelul 2.
Tabelul 2 - Structura BITMAPINFOHEADER
Start Dimensiune
(octeti) Nume Valoare
standard Scop
15 4 biSize 40 Specifica dimensiunea (in octeti)
structurii BITMAPINFOHEADER.
19 4 biWidth 100 Specifica dimensiunea in latime
(largime) a imaginii (in pixeli).
23 4 biHeight 100 Specifica dimensiunea in inaltime a
imaginii (in pixeli).
27 2 biPlanes 1 Specifica numarul de planuri (=1).
29 2 biBitCount ????
Reprezinta numarul de biti folositi
pentru stocarea informatiei despre un
pixel (se mai numeste si adancime).
Valorile corecte pentru acest camp
sunt 1, 4, 8, 16 si 24.
1 = monocromatic (alb/negru). Numar
de culori=1.
4 = paleta de 4 biti. Numar de culori =
Sisteme de prelucrare grafica Laborator nr.1
16.
8 = paleta de 8 biti. Numar de culori =
256.
16 = paleta de 16 biti. Numar de culori
= 65536.
24 = paleta de 24 biti. Numar de culori
= 16M (16.7 milioane de culori).
31 4 biCompression 0 Specifica tipul compresiei. Uzual este
setat la 0 (fara compresie).
35 4 biSizeImage ???? Specifica dimensiunea in octeti a
imaginii.
39 4 biXPelsPerMeter 0 Rezolutia pe orizontala (pixeli/metru)
43 4 biYPelsPerMeter 0 Rezolutia pe verticala (pixeli/metru)
47 4 biClrUsed 0
Numarul actual de culori utilizate.
Daca este setat la 0, numarul de culori
utilizate este calculat utilizand
numarul din biBitCount.
51 4 biClrImportant 0
Numarul de culori importante pentru
bitmap. Daca este setat la 0 atunci
toate culorile sunt importante.
In cazul in care imaginile utilizeaza 4 sau 8 biti pe pixel trebuie sa avem o paleta de
culori. Numarul valid de culori cuprinse in aceasta paleta variaza dupa cum urmeaza: 16 si
respectiv 256 dar pana la urma ele pot fi mai mici daca imaginea nu face uz de toate culorile
posibile. In cazul in care se folosesc 24 de biti pe pixel avem de-a face cu o imagine full-color
care nu mai necesita o paleta de culori.
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.