哪位兄弟帮看看一段读取bmp高度的程序(标准c完成)?

来源:百度知道 编辑:UC知道 时间:2024/06/30 16:36:58
typedef struct tagBITMAPINFOHEADER
{
int bisize;//本结构大小字节为单位
int width;//图形宽度以象素为单位
int height;//图形高度以象素为单位
int planes;//目标设备的级别,必须为1
int bitcount;//每个象素所需要的位数
int SizeImage; // 位图的大小,以字节为单位
int compression;//是否为压缩
int xpermeter;//位图水平分辨率,每米像素数
int ypermeter;// 位图垂直分辨率,每米像素数
int ClrUsed;// 位图实际使用的颜色表中的颜色数
int ClrImportant;// 位图显示过程中重要的颜色数
}BITMAPINFOHEADER;

main()
{

BITMAPINFOHEADER bmih;
FILE *fp;

if((fp=fopen("test.bmp","rb"))==NULL)
{
printf("不能打开该文件\n");
exit(0);
}
else
{
fread(&bmih,sizeof(bmih),1,fp);
printf("图形高度为%d\n",bmih.height);
}
}

结果是:
图形高度为3538944

实际图象为512*384,结果为什么不是384

#include<stdio.h>
#include<stdlib.h>
typedef struct tagBITMAPINFOHEADER
{
int bisize;//本结构大小字节为单位
int width;//图形宽度以象素为单位
int height;//图形高度以象素为单位
int planes;//目标设备的级别,必须为1
int bitcount;//每个象素所需要的位数
int SizeImage; // 位图的大小,以字节为单位
int compression;//是否为压缩
int xpermeter;//位图水平分辨率,每米像素数
int ypermeter;// 位图垂直分辨率,每米像素数
int ClrUsed;// 位图实际使用的颜色表中的颜色数
int ClrImportant;// 位图显示过程中重要的颜色数
}BITMAPINFOHEADER;

typedef struct {
unsigned short int Signature;
unsigned int Size;
unsigned int Reserved;
unsigned int BitsOffset;
}BITMAP_FILEHEADER;

void main()
{
BITMAP_FILEHEADER head;
BITMAPINFOHEADER bmih;
FILE *fp;

if((fp=fopen("test.bmp","rb"))==NULL)
{
printf("不能打开该文件\n");
exit(0);
}
else
{
fread(&head,14,1,fp);
fread(&bmih,sizeof(bmih