Страница 5 из 51
BITMAPFILEHEADER Эта структура описана в файле wingdi.h. Эта структура идет самой первой в файле BMP. Вот её описание. typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
Первой переменной идет bfType - эта переменная содержит тип файла. В нормальном растре первыми буквами идет BM в виде ASCII или 4D42 в шестнадцатеричном виде. Дальше bfSize должен содержать размер файла в байтах. Говорят, что это значение ненадежно и использовать его не стоит. bfReserved1 & bfReserved2 зарезервированы и использовать их не нужно. bfOffBits смещение в байтах от начала растра до массива данных. Этим можно пользоваться. Прочитать заголовок можно примерно так. CString filename; CFileDialog fil(TRUE,"bmp","*.bmp"); if (fil.DoModal()==IDOK) { filename=fil.GetPathName(); CFile cf(filename,CFile::modeRead); BITMAPFILEHEADER bf; cf.Read((void *)&bf,sizeof(bf)); cf.Close(); }
|