我用VC++写的存图像的程序,为啥保存了的BMP图像打不开,说是照片查看器不支持此个格式,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用VC++写的存图像的程序,为啥保存了的BMP图像打不开,说是照片查看器不支持此个格式,相关的知识,希望对你有一定的参考价值。

但是我就是写的BMP图像啊 一开始第一数据时 0x4d42,下面是保存图像的那段程序,
IMAGEDATA *imagedatafenge = NULL; //动态分配分割后的图片的像素信息的二维数组
imagedatafenge = &(*(imagedata + i * width + j + 10) );
imagedatafenge = (IMAGEDATA*)malloc(width * height * sizeof(IMAGEDATA));
//初始化分割后图片的像素数组
for( i = 0;i < height;++i)

for(int j = 0;j < width;++j)

(*(imagedatafenge + i * width + j)).blue = 0;
(*(imagedatafenge + i * width + j)).green = 0;
(*(imagedatafenge + i * width + j)).red = 0;


IMAGEDATAhsv* imagedatahsv = NULL; //动态分配HSV图片的像素信息的二维数组
imagedatahsv = (tagIMAGEDATAhsv*)malloc(width * height * sizeof(IMAGEDATAhsv));
//初始HSV图片的像素数组
for( i = 0;i < height;++i)

for(int j = 0;j < width;++j)

(*(imagedatahsv + i * width + j)).hhh = 0;
(*(imagedatahsv + i * width + j)).sss = 0;
(*(imagedatahsv + i * width + j)).vvv = 0;



fpw=fopen("b.bmp","wb");
if(fpw==NULL)

cout<<"create the bmp file error!"<<endl;
return NULL;

/*WORD bfType_w = 0x4d42; //定义保存文件类型为BMP
fwrite(&bfType_w,sizeof(BYTE),1,fpw);
//fpw +=2; */
fwrite(&strHead,sizeof(tagBITMAPFILEHEADER),1,fpw);
fwrite(&strInfo,sizeof(tagBITMAPINFOHEADER),1,fpw);

//保存调色板数据
for(unsigned int nCounti=0;nCounti<strInfo.biClrUsed;nCounti++)

fwrite(&strPla[nCounti].rgbBlue,1,sizeof(BYTE),fpw);
fwrite(&strPla[nCounti].rgbGreen,1,sizeof(BYTE),fpw);
fwrite(&strPla[nCounti].rgbRed,1,sizeof(BYTE),fpw);
fwrite(&strPla[nCounti].rgbReserved,1,sizeof(BYTE),fpw);


//保存像素数据
for( i =0;i < height;++i)

for( int j = 0;j < width;++j)

fwrite( &((*(imagedatafenge + i * width + j)).red),sizeof(BYTE),1,fpw);//注意三条语句的顺序:否则颜色会发生变化
fwrite( &((*(imagedatafenge + i * width + j)).green),sizeof(BYTE),1,fpw);
fwrite( &((*(imagedatafenge + i * width + j)).blue),sizeof(BYTE),1,fpw);


fclose(fpw);

参考技术A 至少说明位图信息头正确。追问

BMP头文件是对的

以上是关于我用VC++写的存图像的程序,为啥保存了的BMP图像打不开,说是照片查看器不支持此个格式,的主要内容,如果未能解决你的问题,请参考以下文章

vc 截取屏幕

用VC++ 怎样把图像输出保存成jepg或bmp图像

stretchblt为啥会造成图片失真

VC自绘图形怎么保存成BMP或者JPG格式?

一种颜色的图片我保存为gif和png格式的图片,为啥颜色会有偏差呢

vc++6.0MFC画图如何保存为bmp格式