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].