Code:
#include <windows.h>
#include <iostream>
void ReadBmpFileHeader( BITMAPFILEHEADER*, FILE*);
void ReadBmpInfoHeader( BITMAPINFOHEADER*, FILE*);
typedef struct BMP1
{
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
BMP1() { bfSize = 0; }
};
typedef struct BMP2
{
unsigned long biSize;
unsigned long biWidth;
unsigned long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
unsigned long biXPelsPerMeter;
unsigned long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
BMP2()
{
biWidth
= biHeight
= biCompression
= biSizeImage
= biXPelsPerMeter
= biYPelsPerMeter
= biClrUsed
= biClrImportant = 0;
biSize = sizeof(BMP2);
biPlanes = biBitCount
= 0;
}
};
int main()
{
int end;
FILE *fp;
BITMAPFILEHEADER *FILEHEADER;
fp = fopen("image.bmp","rb");
if(fp==NULL)
{
printf("File not found.\n");
}
else
{
printf("File found!\n");
}
ReadBmpFileHeader(FILEHEADER, fp); //How can I use this? and I'm not sure I use it correctly.
fclose(fp);
scanf("%d",&end);
return(0);
}
void ReadBmpFileHeader( BITMAPFILEHEADER *FILEHEADER, FILE *fp)
{
fread( &FILEHEADER->bfType, sizeof( FILEHEADER->bfType ), 1, fp );
fread( &FILEHEADER->bfSize, sizeof( FILEHEADER->bfSize ), 1, fp );
fread( &FILEHEADER->bfReserved1, sizeof( FILEHEADER->bfReserved1 ), 1, fp );
fread( &FILEHEADER->bfReserved2, sizeof( FILEHEADER->bfReserved2 ), 1, fp );
fread( &FILEHEADER->bfOffBits, sizeof( FILEHEADER->bfOffBits ), 1, fp );
}
void ReadBmpInfoHeader( BITMAPINFOHEADER *INFOHEADER, FILE *fp )
{
fread( &INFOHEADER->biSize, sizeof( INFOHEADER->biSize ), 1, fp );
fread( &INFOHEADER->biWidth, sizeof( INFOHEADER->biWidth ), 1, fp );
fread( &INFOHEADER->biHeight, sizeof( INFOHEADER->biHeight ), 1, fp );
fread( &INFOHEADER->biPlanes, sizeof( INFOHEADER->biPlanes ), 1, fp );
fread( &INFOHEADER->biBitCount, sizeof( INFOHEADER->biBitCount ), 1, fp );
fread( &INFOHEADER->biCompression, sizeof( INFOHEADER->biCompression ), 1, fp );
fread( &INFOHEADER->biSizeImage, sizeof( INFOHEADER->biSizeImage ), 1, fp );
fread( &INFOHEADER->biXPelsPerMeter, sizeof( INFOHEADER->biXPelsPerMeter ), 1, fp );
fread( &INFOHEADER->biYPelsPerMeter, sizeof( INFOHEADER->biYPelsPerMeter ), 1, fp );
fread( &INFOHEADER->biClrUsed, sizeof( INFOHEADER->biClrUsed ), 1, fp );
fread( &INFOHEADER->biClrImportant, sizeof( INFOHEADER->biClrImportant ), 1, fp );
}