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

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 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题