LegendFateX
2018-04-24 02:40用mfc编写数字图像处理程序读取BMP图像时出现问题
10图一为该程序中读取BMP的代码
BOOL CImageDoc::ReadBMP(LPCTSTR lpszPathName)
{
long lTotal = 0;
CFile file;
file.Open(lpszPathName, CFile::modeRead);
file.Read(&bmpFH, sizeof(BITMAPFILEHEADER));
lpbmi = (LPBITMAPINFO)new char[sizeof(BITMAPINFO) + 4 * (1 << 8)];
file.Read(lpbmi, sizeof(BITMAPINFOHEADER));
m_nColorBits = lpbmi->bmiHeader.biBitCount;
imageHeight = lpbmi->bmiHeader.biHeight;
imageWidth = lpbmi->bmiHeader.biWidth;
if (m_nColorBits == 8)
{
lTotal = imageWidth * imageHeight;
file.Read(&(lpbmi->bmiColors[0]), 256 * 4);
}
else if (m_nColorBits == 24)
{
lTotal = imageWidth * imageHeight * 3;
}
else
{
file.Close();
return FALSE;
}
m_pBits = new unsigned char[lTotal];
file.Read(m_pBits, lTotal);
file.Close();
return TRUE;
}
图二为该程序中保存BMP的代码
BOOL CLufangxiaoImageDoc::SaveBMP(LPCTSTR lpszPathName)
{
long lTotal = 0;
CFile file;
file.Open(lpszPathName, CFile::modeCreate | CFile::modeReadWrite);
file.Write(&bmpFH, sizeof(BITMAPFILEHEADER));
file.Write(lpbmi, sizeof(BITMAPINFOHEADER));
if (m_nColorBits == 8)
{
lTotal = imageWidth * imageHeight;
file.Write(&(lpbmi->bmiColors[0]), 256 * 4);
}
else if (m_nColorBits == 24)
{
lTotal = imageWidth * imageHeight * 3;
}
else
{
file.Close();
return FALSE;
}
file.Write(m_pBits, lTotal);
file.Close();
return TRUE;
}
保存图像之后出现无法打开的情况
图三和图四为对图像实现操作的代码,只要运行到有pDoc->image的位置就会报错,提示pDoc->image是nullptr
跪求大神指导!!
- 点赞
- 回答
- 收藏
- 复制链接分享
5条回答
为你推荐
- mfc项目,使用mysql查询时有几率造成程序闪退
- c++
- 4个回答
- MFC 图像/数据是怎么显示的
- mfc
- 内存
- 显示
- 1个回答
- VS2008DEBUG运行MFC程序出现的一个问题,求解答
- mfc
- 调试
- visual studio
- 汇编
- 3个回答
- MFC 读取文本内容的问题
- mfc
- c++
- 4个回答
- 关于使用vs2015编写mfc应用程序的问题
- mfc
- 应用
- 4个回答