http://pl.wikipedia.org/wiki/Windows_Bitmap:
Transkrypt
http://pl.wikipedia.org/wiki/Windows_Bitmap:
http://pl.wikipedia.org/wiki/Windows_Bitmap: Nagłówek pliku – część A 14 Bajtów Przechowuje najważniejsze informacje o pliku. Jest zbędny po załadowaniu obrazka do pamięci. Nagłówek DIB – część B Różny rozmiar (istnieje 7 różnych wersji tego nagłówka) Przechowuje najważniejsze informacje o obrazie i definiuje format piksela. Występuje bezpośrednio po nagłówku pliku. Tablica pikseli Różny rozmiar Definiuje wartości poszczególnych pikseli Format piksela zdefiniowany jest w nagłówku DIB lub w dodatkowej masce bitowej. Każdy wiersz tablicy pikseli jest wyrównany do wielokrotności 4 bajtów. Windows BMP files begin with a 54-byte header: offset size description type 0 2 signature, must be 4D42 hex char tab[2] 2 4 size of BMP file in bytes (unreliable) unsigned int 6 2 reserved, must be zero 8 2 reserved, must be zero 10 4 offset to start of image data in bytes 14 4 size of BITMAPINFOHEADER structure, must be 40 18 4 image width in pixels unsigned int 22 4 image height in pixels unsigned int 26 2 number of planes in the image, must be 1 28 2 number of bits per pixel (1, 4, 8, or 24) 30 4 compression type (0=none, 1=RLE-8, 2=RLE-4) 34 4 size of image data in bytes (including padding) 38 4 horizontal resolution in pixels per meter (unreliable) 42 4 vertical resolution in pixels per meter (unreliable) 46 4 number of colors in image, or zero 50 4 number of important colors, or zero Odczyt wartości pikseli: int *img; FILE *plik=fopen... fread(img,1,1,plik); Linie obrazu zapisywane są od dołu do góry. W obrazach TrueColor punkty zapisywane są w kolejności B, G, R (trzy bajty), w obrazach o mniejszej liczbie kolorów zapisywane są one na mniejszej ilości bajtów – przykładowo 16bitowa bitmapa (High Color) zapisuje na dwóch bajtach [6bitów B][5bitów G][5bitów R]. Dla plików z liczbą kolorów mieszczącą się w liczbie ośmiobitowej, kolor zapisywany jest jako numer koloru (wskaźnik) w palecie. Należy zwrócić uwagę, że (poniekąd ze względów historycznych) w wierszu danych pliku BMP jest zawsze zapisana wielokrotność 4 bajtów. Jeśli wiersz danych ma długość (w bajtach) inną, niż podzielna przez 4, to dopisuje się bajty o wartości 0, tak aby w danym wierszu ilość bajtów była wielokrotnością 4. Animowane bitmapy – powstają z cyklicznej podmiany kolorów w palecie, przykładem może być logo startowe systemu Windows. Animowane bitmapy można tworzyć dla obrazów 8-bitowych. Należy zwrócić szczególną uwagę na zapis kolejnych bajtów danych obrazu: nie jest to [R, G, B], ale [B, G, R].