程序如下,请朋友们指教一下,保存bmp文件显示图片错误是什么问题
bool CMeasureOfflineDlg::LoadBmp(int subfile,int PicNo)//加载bmp灰度
{
CString str_filename,str_subfile;
str_filename.Format("图%d.bmp",PicNo);
str_subfile.Format("%d",subfile);
str_fileFold=m_strFold+"\"+str_subfile+"\"+str_filename;
CFile Imagefile;
if(!(Imagefile.Open(str_fileFold,CFile::modeRead)))
return FALSE;
Imagefile.SeekToBegin();
Imagefile.Read(&m_sBMFH,sizeof(BITMAPFILEHEADER));//读取文件头
if(m_sBMFH.bfType!=0x4d42)//判断是否BMP格式
{
MessageBox("该文件不是BMP格式的文件!",MB_OK);
return FALSE;
}
Imagefile.Read(&m_sBMIH,sizeof(BITMAPINFOHEADER));//读取文件信息头
int nSize; //用来记录调色板的大小
nSize=m_sBMFH.bfOffBits-sizeof(BITMAPFILEHEADER)-sizeof(BITMAPINFOHEADER);//计算调色板的大小
if(nSize!=0)
{
//读取调色板
m_pPalette = new RGBQUAD [nSize/4];
Imagefile.Read((char *)(m_pPalette),nSize);
}
//读取图像数据
m_pBData=new BYTE[m_sBMIH.biSizeImage];
Imagefile.Read((char *)(m_pBData),m_sBMIH.biSizeImage);
return TRUE;
}
bool CMeasureOfflineDlg::SaveBmp(int subfile,int PicNo)
{
//int i;
CString str_filename,str_subfile;
CString str_file;
CString BmpPath="F:\图像";
str_filename.Format("图%d.bmp",PicNo);
str_subfile.Format("%d",subfile);
str_file=BmpPath+"\"+str_subfile+"\"+str_filename;
CFile Imagefile;
if(!(Imagefile.Open(str_file,CFile::modeCreate | CFile::modeWrite)))
return FALSE;
Imagefile.SeekToBegin();
//Imagefile.Write(&bfType,sizeof(WORD));
Imagefile.Write(&m_sBMFH,sizeof(BITMAPFILEHEADER));//写入文件头
if(bfType!=0x4d42)//判断是否BMP格式
{
MessageBox("该文件不是BMP格式的文件!",MB_OK);
return FALSE;
}
Imagefile.Write(&m_sBMIH,sizeof(BITMAPINFOHEADER));//写入文件信息头
int nSize; //用来记录调色板的大小
nSize=m_sBMFH.bfOffBits-sizeof(BITMAPFILEHEADER)-sizeof(BITMAPINFOHEADER);//计算调色板的大小
if(nSize!=0)
{
//读取调色板
//读取调色板
//m_pPalette = new RGBQUAD [nSize/4];
Imagefile.Write((char *)(m_pPalette),nSize);
//}
//写入图像数据
//m_pBData=new BYTE[m_sBMIH.biSizeImage];
Imagefile.Write((char *)(m_pBData),m_sBMIH.biSizeImage);
return TRUE;
}
bool CMeasureOfflineDlg::SaveBmp(int subfile,int PicNo)
{
//int i;
CString str_filename,str_subfile;
CString str_file;
CString BmpPath="F:\图像";
str_filename.Format("图%d.bmp",PicNo);
str_subfile.Format("%d",subfile);
str_file=BmpPath+"\"+str_subfile+"\"+str_filename;
CFile Imagefile;
if(!(Imagefile.Open(str_file,CFile::modeCreate | CFile::modeWrite)))
return FALSE;
Imagefile.SeekToBegin();
//Imagefile.Write(&bfType,sizeof(WORD));
Imagefile.Write(&m_sBMFH,sizeof(BITMAPFILEHEADER));//写入文件头
if(bfType!=0x4d42)//判断是否BMP格式
{
MessageBox("该文件不是BMP格式的文件!",MB_OK);
return FALSE;
}
Imagefile.Write(&m_sBMIH,sizeof(BITMAPINFOHEADER));//写入文件信息头
int nSize; //用来记录调色板的大小
nSize=m_sBMFH.bfOffBits-sizeof(BITMAPFILEHEADER)-sizeof(BITMAPINFOHEADER);//计算调色板的大小
if(nSize!=0)
{
//读取调色板
//读取调色板
//m_pPalette = new RGBQUAD [nSize/4];
Imagefile.Write((char *)(m_pPalette),nSize);
//}
//写入图像数据
//m_pBData=new BYTE[m_sBMIH.biSizeImage];
Imagefile.Write((char *)(m_pBData),m_sBMIH.biSizeImage);
return TRUE;
}