[mw_shl_code=c,true]/*定义BYTE为无符号一个字节的类型*/
typedef unsigned char BYTE;
/*定义WORD为无符号两个字节的类型*/
typedef unsigned short WORD;
/*定义DWORD为无符号四个字节的类型*/
typedef unsigned long DWORD;
/*位图文件头*/
typedef struct BMP_FILE_HEADER
{
WORD bType; /* 文件标识符 */
DWORD bSize; /* 文件的大小 */
WORD bReserved1; /* 保留值,必须设置为0 */
WORD bReserved2; /* 保留值,必须设置为0 */
DWORD bOffset; /* 文件头的最后到图像数据位开始的偏移量 */
} BMPFILEHEADER;
/*位图信息头*/
typedef struct BMP_INFO
{
DWORD bInfoSize; /* 信息头的大小 */
DWORD bWidth; /* 图像的宽度 */
DWORD bHeight; /* 图像的高度 */
WORD bPlanes; /* 图像的位面数 */
WORD bBitCount; /* 每个像素的位数 */
DWORD bCompression; /* 压缩类型 */
DWORD bmpImageSize; /* 图像的大小,以字节为单位 */
DWORD bXPelsPerMeter; /* 水平分辨率 */
DWORD bYPelsPerMeter; /* 垂直分辨率 */
DWORD bClrUsed; /* 使用的色彩数 */
DWORD bClrImportant; /* 重要的颜色数 */
} BMPINF;
int main()
{
FILE *fpin = NULL;
BMPFILEHEADER fileHeader = { 0, 0 };
BMPINF infoHeader = { 0, 0 };
DWORD offset = 0, width = 0, height = 0, bitCount = 0;
//打开文件
if((fpin = fopen("Picture.bmp", "rb")) == NULL)
{
return 1; //错误,返回1
}
//把fpin指针移动到文件开头
fseek(fpin, 0, 0);
//获取文件头数据
fread(&fileHeader, sizeof(fileHeader), 1, fpin);
//获取信息头数据
fread(&infoHeader, sizeof(infoHeader), 1, fpin);
//计算并输出位图数据的偏移量,图像的宽度和高度,每个像素的位数
offset = fileHeader.bOffset;
width = infoHeader.bWidth;
height = infoHeader.bHeight;
bitCount = infoHeader.bBitCount;
//关闭文件
fclose(fpin);
while(1);
return 0; //正确,返回0
}[/mw_shl_code]
|