qq_27233707 2017-11-24 02:01 采纳率: 0%
浏览 2262

bmp文件保存出现图片错误的问题

程序如下,请朋友们指教一下,保存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;

}

  • 写回答

2条回答 默认 最新

  • wmurphy123 2017-11-26 03:55
    关注

    看下是否有管理员权限创建文件。然后再坚持代码。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器