Napisałem taki kod:
#include <stdio.h>
typedef struct {
signed char Type1; //I litera ("B")
signed char Type2; //II litera ("M")
unsigned int Size; //rozmiar pliku
short int Reserved1;
short int Reserved2;
unsigned int OffBits;
} BITMAPFILEHEADER2;
int main()
{
FILE *wsk;
BITMAPFILEHEADER2 header2;
if (!(wsk=fopen("obrazek3.bmp","rb"))) return 1
else printf("Otwarto pomyslnie plik BMP\n");
fread(&header2, sizeof(BITMAPFILEHEADER2),1,wsk);
printf("Rozmiar: %i\n",(unsigned long int)header2.Size);
fclose(wsk);
return 0;
}
Stosując w/w kod nie mogę odczytać prawidłowo rozmiaru bitmapy z jej nagłówka. Pierwsze dwa pola są rozpoznawane prawidłowo (litery B i M) natomiast wszystko co jest "później" w pliku jest źle rozpoznawane. Przykładowo dla bitmapy o rozmiarze 717 878 bajtow program podaje mi wartość 10 [???]
Czy coś jest nie tak ze struktorą? Rozmiar pola Size ma być typu DWORD - czyli 4 bajty (unsigned) - i nie działa. Wynikałoby z tego, że nie da się odczytać prawidłowo struktury pliku BMP za pomocą standardowych typów zmiennych C/C++ (32bit).
Wiem, że istnieje gotowa struktura etc. etc. ale ja chcę sam stworzyć ją od podstaw...
Pomocy...
[sciana]
info o BMP: http://myfileformats.com/search.php?name=BMP