c语言bmp文件读取的问题
很纠结的一个问题 下面的程序 我分别对两个图片(都是24位的灰度图)操作 有一个成功了 一个失败了一直找不到原因一个是400*400 一个是320*213 帮忙看看 分析一下哈谢谢啦
程序代码:#include <stdio.h>
#include <stdlib.h>
#include<Windows.h>
struct color{
unsigned char red;
unsigned char green;
unsigned char blue;
}color;
void main(){
BITMAPFILEHEADER file;
BITMAPINFOHEADER info;
FILE *p,*p1;
int i,j;
long x,y;
struct color temp[450][450];
p=fopen("MM.bmp","rb");
p1=fopen("CHMM.bmp","wb");
fread(&file,sizeof(BITMAPFILEHEADER),1,p);//头文件的读取与存储
fread(&info,sizeof(BITMAPINFOHEADER),1,p);
fwrite(&file,sizeof(BITMAPFILEHEADER),1,p1);
fwrite(&info,sizeof(BITMAPINFOHEADER),1,p1);
y=info.biHeight;//读取文件高度
x=info.biWidth;//读取文件宽度
printf("%d %d\n",x,y);
if(file.bfType!=0x4d42){//检验是否为bmp文件
printf("不是bmp图片\n");
return;
}
for(i=1;i<=x;i++){//用for循环读取像素(这个bmp为24位,所以没有颜色表)
for(j=1;j<=y;j++){
fread(&color,sizeof(struct color),1,p);
temp[i][j].blue=color.blue;
temp[i][j].green=color.green;
temp[i][j].red=color.red;
}
}
for(i=1;i<=x;i++){//读取之后再存入文件
for(j=1;j<=y;j++){
fwrite(&temp[i][j],sizeof(struct color),1,p1);
}
}
fclose(p1);
fclose(p);
getchar();
}







