C++如何读取bmp图篇

intmain(){//charstrFile[LENGTH_NAME_BMP];//bmp文件名IMAGEDATA*imagedata=NULL;//动态分配存储原图片... int main(){ //char strFile[LENGTH_NAME_BMP];//bmp文件名
IMAGEDATA *imagedata = NULL;//动态分配存储原图片的像素信息的二维数组
IMAGEDATA *imagedataRot = NULL;//动态分配存储旋转后的图片的像素信息的二维数组
int width,height;//图片的宽度和高度
//cout<<"请输入所要读取的文件名:"<<endl;
//cin>>strFile;
FILE *fpi;
//errno_t err;
err = fopen_s( &fpi, "D:\\a00.bmp", "rb" );
//fpi= fopen( "D:\\a00.bmp", "rb" );
if (err!=0)
cout<< "The file 'data' was not opened"<<endl ;
else
cout<< "The file 'data' was opened\n" <<endl;

////////////////////
if(fpi != NULL){
//先读取文件类型
WORD bfType;
fread(&bfType,1,sizeof(WORD),fpi);
if(0x4d42!=bfType)
{
cout<<"the file is not a bmp file!"<<endl;
return NULL;
}
cout<<bfType<<endl; //读取bmp文件的文件头和信息头
fread(&strHead,sizeof(tagBITMAPFILEHEADER),1,fpi);
showBmpHead(strHead);//显示文件头

fread(&strInfo,sizeof(tagBITMAPINFOHEADER),1,fpi);
showBmpInforHead(strInfo);//显示文件信息头

}

书上说的保留字1,和保留字2,都应该是0 啊,为啥我的不是?
图片的长宽是1300*768. , 程序显示高时1572865了,,求高手指点
展开
 我来答
shinf12
2012-10-18 · 超过12用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:23.5万
展开全部
tagBITMAPFILEHEADER 里面包含了type吧, 你先fread了type,所以数据往后移了
匿名用户
2012-10-17
展开全部
读错位置了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式