#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
void main()
{
/* BMP文件头 */
typedef struct
{
unsigned short bfType; /* 文件类型 */
unsigned long bfSize; /* 文件大小 */
unsigned short bfReserved1; /* 保留位 */
unsigned short bfReserved2; /* 保留位 */
unsigned long bfOffBits; /* 数据偏移位置 */
} HEAD;
/* BMP信息头 */
typedef struct
{
unsigned long biSize; /* 此结构大小 */
long biWidth; /* 图像宽度 */
long biHeight; /* 图像高度 */
unsigned short biPlanes; /* 调色板数量 */
unsigned short biBitCount; /* 每个象素对应的位数,24:24位图,32:带alpha通道的24位图 */
unsigned long biCompression; /* 压缩 */
unsigned long biSizeImage; /* 图像大小 */
long biXPelsPerMeter;/* 横向分辨率 */
long biYPelsPerMeter;/* 纵向分辨率 */
unsigned long biClrUsed; /* 颜色使用数 */
unsigned long biClrImportant; /* 重要颜色数 */
}BMPINFOHEADER;
FILE *file ;
HEAD bmpFile;
BMPINFOHEADER bmpInfo;
char *pbuffer;
/* 打开文件 */
file = fopen("LENNA.BMP", "rb");
if (file== NULL)
{
printf(" openning error\n");
}
/* 读入文件头 */
fread(&bmpFile, sizeof(HEAD),1, file);
if (bmpFile.bfType != 0x4D42)
{
printf(" reading error!!!");
}
printf("%x\n",bmpFile.bfType); /* 验证文件类型 */
printf("%ld\n",bmpFile.bfSize);
printf("%ld\n",bmpFile.bfOffBits);
/* 读信息头 */
fread(&bmpInfo, sizeof(BMPINFOHEADER), 1, file);
printf("%ld\n",bmpInfo.biSizeImage);
printf("%d\n",bmpInfo.biWidth);
getch();
}
这个程序我用的是512*512的bmp图象。但是读/* 读信息头 */下面读到的数据都是错误的,比如bmpInfo.biWidth应该是512才对啊。