Formatul bmp datelor (bitmap)

Ce este un bitmap

În lecția de astăzi ne vom uita mai întâi la modul în care formatul nostru de fișier. formate de fișiere diferite sunt proiectate pentru a stoca informații diferite. Fiecare format definește o modalitate de a organiza datele într-un fișier.







BMP - bitmap - maparea biți. Termenul „afișare“ este preluată din matematică. În matematică, display-ul este foarte aproape de conceptul de funcții. Pentru simplificare, presupunem că bitmap cuvânt - este o imagine (deși nu este așa).

Informații despre fișier BMP (antet fișier bmp)

Fiecare fișier de tip bitmap are un antet de 14 octeți. Domenii de acest antet:

Să creeze o imagine de 100x100 pixeli. Fiecare pixel ocupă 32 de biți. antet fișier va arăta astfel:

Notă importantă: de fapt, aceste numere sunt stocate ca o secvență de octeți. Sper că acest lucru este de înțeles. Aici (și în acest exemplu), le-am aranjat într-o coloană pentru facilitarea lecturii.

Vom înțelege al doilea câmp. 14 - dimensiunea antetul fișierului. 40 - header image size (zăpadă de mai jos) 100 * 100 - numărul de pixeli. Și, în plus, din moment ce am fost de acord că fiecare pixel va ocupa 32 de biți (4 octeți), numărul de pixeli trebuie să fie înmulțit cu patru.

Ultimul câmp: imaginea începe imediat imediat după antetul fișierului (14 bytes), și antetul de imagine (40 bytes).

BMP Informații imagine (imagine antet)

Există mai multe versiuni ale BMP. Versiunea software-ului poate fi dimensiunea antetul imaginii. Vom folosi versiunea pentru Windows a V3, care este de 40 de octeți. Alte versiuni ia 12, 64, 108, 124 bytes.

În WinAPI versiunea bmp de stocare a Windows V3 utilizat structura BitmapInfoHeader.

Ferestre V3 câmpurile de antet:

4 octeți. size antet. Acesta este întotdeauna setat la 40 de octeți.
4 octeți. Lățimea imaginii în pixeli.
4 octeți. Înălțimea imaginii în pixeli.
2 octeți. Acest câmp conține întotdeauna o unitate.
2 octeți. Adâncimea de culoare - numărul de biți în pixel.
4 octeți. metoda de compresie.
4 octeți. dimensiune. Aceasta specifică dimensiunea imaginii de la sine - fără a lua în considerare dimensiunea antet.
4 octeți. Rezoluția orizontală în pixeli per metru (în număr de pixeli per metru).
4 octeți. Rezoluție verticală în pixeli per metru (în număr de pixeli per metru).






4 octeți. Numărul de culori din paleta.
4 octeți. Numărul de culori importante în paleta.

Acum, să vedem cum va arăta ca antetul imaginii, în acest caz:

Pentru metoda de compresie am ales 0 - fără compresie. Alte valori sunt posibile. De interes: BI_JPEG (valoare - 4) - utilizat în compresie jpeg-imagini si BI_PNG (valoare - 5) - utilizate în compresie png-imagini.

După antetul este paleta de culori. În cazul în care nu este prezent, antetul imediat după imaginea de start. Imagini cu palete noi nu vor fi luate în considerare.

date de imagine BMP

Imaginea este compusă din pixeli. adâncime de culoare de pixeli este specificat formatul (vezi mai sus). În exemplul nostru, am folosit 32 de biți per pixel. 32-bit color, de obicei, este format din patru canale: alfa (transparență), roșu, verde, albastru: ARGB (Alpha, roșu, verde, albastru). Uneori, canalul alfa nu este utilizat în acest caz, imaginea poate ocupa încă 32 de biți, calcule simple, nu acorde atenție la valoarea unui canal. În acest caz, numele canalelor sunt scrise după cum urmează: XRGB.

Fiecare canal este de 8 biți (1 byte) și poate lua 256 de valori de la zero la 255 (0x00 0xFF).

Rândul stocat imagine bmp de jos în sus, adică, a înregistrat mai întâi linia de jos, apoi sus. Asigurați-vă că: Descărcați unul dintre imaginile din primul exercițiu și să păstreze doar jumătate din liniile imaginii într-un alt fișier.

Când adâncimea de 32-uhbitnoy de canale de culoare în bmp scrise ca: BGRA. Este în această ordine: albastru, verde, roșu, alfa.

Mărimea șirului de date în imagine bmp ar trebui să fie un multiplu de patru (în octeți). Dacă nu, șirul este căptușit cu zerouri. Acest lucru se întâmplă în cazul în care utilizează 1,2,4,8,16,24 biți per canal. De exemplu, avem lățimea imaginii în pixeli și 3, vom folosi 16-bit color. Lățimea liniei: 16 * 3 = 48 (6 octeți). Dar lungimea șirului trebuie să fie un multiplu de patru, astfel încât adăugarea a încă doi octeți, iar lungimea liniei în acest exemplu este egal cu opt octeți. Deși în ultimii doi octeți din fiecare linie și nu vor fi stocate informații utile. Este necesar să se ia în considerare starea de multiplicitate dimensiune patru linii atunci când se lucrează cu imagini non-32-biți.

Acum, prodolzhnim cu exemplul nostru și cu ajutorul a crea o imagine cod. Fiecare pixel va fi inițializat de culoare aleatorii:

Ca urmare, codul în directorul cu proiectul dumneavoastră (dacă executați programul prin debugger (F5)) sau în dosarul Debug al soluției (dacă rulați fișierul .exe executabil) temp.bmp fișier va fi creat, care poate fi deschis în orice imagini prostmotrschike. Imaginea este compusă din puncte colorate.

Cele mai recente de la bord

dimaCyberpunk → Joc de dezvoltare: Chronicles of cyberpunk
Curs icoane desen animat de caractere, puteți face alte sarcini https:

IndieCurator → Promovarea jocurilor Steam
Doamne! Fiecare dezvoltator \ editor care se respecta pentru a elibera jocul știe că fără reclame.

proxyan → Serviciu PROXYAN.net - cumpăra un proxy server de încredere, HTTP rapid / SOCKS
PROXYAN.net Service - solutie de securitate profesionala pe serv de rețea.

mattp → instalare Motivat pentru aplicații Android
AppLead - Mobile Marketing Studio oferă o promovare integrată Mobile App.

MaksXXX → sloturi online gratuite
Avantajele cazinouri online sunt evidente pentru oricine care a încercat vreodată să joace pe Internet.

MaksXXX → Licentiat Casino Online
Avantajele cazinouri online sunt evidente pentru oricine care a încercat vreodată să joace pe Internet.

prietenii noștri