Formatul de fișier BMP (en. Bitmap - hartă de biți), cunoscut de asemenea și ca fișier imagine Bitmap sau formatul de fișier DIB (en. Device Independent Bitmap - „bitmap” independent de dispozitiv) sau pur și simplu Bitmap, este un format de fișier imagine de tip rastru folosit pentru a stoca imagini digitale independent de dispozitivul de afișare (cum ar fi un adaptor grafic) în special pe sistemele de operare Microsoft Windows și OS/2.
Formatul de fișier BMP este capabil de a stoca imagini digitale bidimensionale de lățime, înălțime și rezoluție arbitrare, monocrome sau color, de variate adâncimi de culoare iar opțional cu comprimare de date, canale alfa și profile de culoare. Microsoft nu a publicat niciodată o specificație de sine stătătoare a formatului; informațiile despre structura și codificarea datelor au fost difuzate prin documentația pentru programatori și prin kiturile de dezvoltare software pentru Windows.
Structura fișierului
Un fișier BMP este alcătuit din structuri de dimensiune fixă (anteturi) și din structuri de dimensiune variabilă, care apar într-o ordine prestabilită: antetul de fișier de 14 octeți, antetul DIB, eventualele măști de biți suplimentare, tabelul de culori, matricea de pixeli și, opțional, un profil de culoare ICC. Din cauza evoluției îndelungate a formatului, în fișier pot apărea versiuni diferite ale unora dintre aceste structuri.
Antetul de fișier
Acest bloc de octeți se află la începutul fișierului și servește la identificarea lui, iar toate valorile întregi din fișier sunt stocate în format little-endian, adică octetul cel mai puțin semnificativ primul.
Secvențele posibile ce identifică formatul BMP sunt:
Ofset # Dimensiune (octet) Valoare (hex) Descriere 0 2 42 4D Primii doi octeți identifică formatul fișierului 2 4 00 00 – FF FF Dimensiunea imaginii desenate pe doi octeți. 6 2 Rezervați Rezervați. Octeți completați de aplicația software. 8 2 Rezervați Rezervați. A doua serie extinsă de octeți completată de aplicația software. 10 4 00 00 00 0A – FF FF FF FF Începutul datelor propriu-zise (raw), unde se stochează imaginea. 0Ax 1 00x – FFx Primul octet. 0Ax + 1 1 00x – FFx Al doilea octet. EOF − 1 1 00x – FFx Ultimul octet.
Antetul DIB
Antetul DIB urmează imediat după antetul de fișier și transmite aplicației informațiile necesare afișării imaginii. Toate variantele lui încep cu un câmp de 32 de biți care indică propria dimensiune, astfel încât aplicația poate determina ce versiune este folosită. Fiindcă Microsoft a extins formatul de mai multe ori, există șapte variante de antet.
Fiecare versiune nouă doar adaugă câmpuri la sfârșitul antetului precedent, iar variantele și le-au înlocuit pe cele mai vechi, , respectiv . Cel mai răspândit este , de 40 de octeți, care conține dimensiunile imaginii în pixeli, numărul de biți pe pixel, metoda de comprimare, rezoluția și numărul de culori din paletă.
Paleta de culori și stocarea pixelilor
Pentru imaginile cu adâncimi de culoare de cel mult 8 biți este obligatoriu un tabel de culori (paletă), fiecare pixel fiind descris printr-un indice ce trimite la o culoare din acest tabel; în majoritatea cazurilor o intrare ocupă 4 octeți, în ordinea albastru, verde, roșu și un octet nefolosit.
Biții care reprezintă pixelii sunt grupați pe rânduri, numite și linii de scanare, iar dimensiunea fiecărui rând este rotunjită în sus la un multiplu de 4 octeți prin adăugarea unor octeți de umplutură. În mod implicit rândurile sunt stocate „de jos în sus”, adică primul rând din fișier este ultimul rând afișat; cu excepția fișierelor care folosesc antetul sau comprimarea RLE, imaginile pot fi stocate și „de sus în jos”, caz în care înălțimea este scrisă în antet ca număr negativ.
Comprimare
Cea mai frecventă metodă este , adică absența comprimării; în practică majoritatea imaginilor BMP sunt necomprimate, iar cele de 16 și de 32 de biți pe pixel sunt întotdeauna stocate necomprimat. Imaginile cu paletă pot fi comprimate cu algoritmul run-length (RLE) pe 4 sau pe 8 biți pe pixel, iar în OS/2 și cu o codificare Huffman unidimensională. Începând cu antetul , câmpul de comprimare poate arăta că datele sunt de fapt o imagine JPEG sau PNG încapsulată, variantă folosită însă doar la tipărire.
Utilizare
Structura simplă a unei imagini BMP necomprimate face ca formatul să fie bine sprijinit de programele de vizualizare și de prelucrare a imaginilor, precum și de navigatoarele web. El este folosit în primul rând în cadrul sistemului de operare Windows, pentru pictograme, capturi de ecran și pentru transferul imaginilor între aplicații, fiind considerat nepotrivit pentru utilizarea generală pe web. Fișierele de tip ICO, care conțin pictogramele din Windows, includ imagini ce încep tot cu un antet .
Declararea unei matrice de date tip BMP în C++ C++ # |- #include <stdint.h> struct bmpfile_magic { unsigned char magic}; struct bmpfile_header { uint32_t filesz; uint16_t creator1; uint16_t creator2; uint32_t bmp_offset;};
Referințe
Vezi și
Grafică vectorială
Categorie:Formate de fișiere grafice Categorie:Tipuri de fișiere