读取位图文件
来源:互联网 发布:天猫推荐算法大赛代码 编辑:程序博客网 时间:2024/06/02 15:20
位图由位图文件头、位图信息头、颜色表、位图像素数据四部分组成,网上关于位图文件结构介绍的资料很多,这里就不再赘述。
下面我们主要介绍一下位图文件的读取。
一. 读取位图文件
1. 头文件中添加如下变量
CString strFileName; //打开文件名
BITMAPFILEHEADER bmfHeader; //位图文件头
BITMAPINFOHEADER bmiHeader; //位图信息头
void* pimage; //位图数据
RGBQUAD* pRgbQuad; //颜色表
long number_image //位图数据大小
2. 添加打开消息响应函数OnFileOpen()
//弹出打开对话框
CFileDialog dlg(TRUE,TEXT("BMP"),0,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,TEXT("位图文件(*.BMP)|*.BMP||"),this);
dlg.m_ofn.lpstrTitle = "Open Bitmap";
if(dlg.DoModal() != IDOK)
return;
//打开位图文件
CFile file;
strFileName=dlg.GetPathName();
if(file.Open(strFileName, CFile::modeRead | CFile::shareDenyNone, NULL) == 0)
{
AfxMessageBox("File open failed.");
return;
}
//读取位图文件头
file.Read(&bmfHeader, sizeof(bmfHeader));
if(bmfHeader.bfType != (*(WORD*)"BM")) //0x4d42
{
AfxMessageBox("File type error.");
return;
}
if(file.GetLength() != bmfHeader.bfSize)
{
AfxMessageBox("File is demaged.");
return;
}
//读取位图信息头
file.Read(&bmiHeader, sizeof(bmiHeader));
//读取颜色表
if(bmiHeader.biBitCount == 8) //256色位图
{
pRgbQuad = new RGBQUAD[256];
file.Read(pRgbQuad, sizeof(RGBQUAD)*256);
}
else if(bmiHeader.biBitCount != 24)
{
AfxMessageBox("Only 24bit and 8bit could be opened.");
return;
}
//读取位图数据
int lineByte = (bmiHeader.biWidth*bmiHeader.biBitCount/8+3)/4*4;
number_image = lineByte*(bmiHeader.biHeight);
pimage = new BYTE[number_image];
file.Read(pimage, number_image);
file.Close();
- 读取位图文件
- 位图文件的读取显示
- 读取并显示位图文件
- 如何从文件读取显示位图?
- Bitmap位图文件读取、保存、屏幕截图
- Bitmap位图文件读取、保存、屏幕截图
- 飞鸽传书 CFile 来读取位图 BMP 文件
- 用java实现print screen,读取位图文件,将位图文件转
- C#读取Win32标准DLL文件中的Bitmap(位图)
- DIB位图文件的格式、读取、保存和显示
- DIB位图文件的格式、读取、保存和显示
- 遍历文件目录及bmp位图信息头的读取
- DIB位图文件的格式、读取、保存和显示
- 位图的读取与保存 C语言 源文件+头文件
- DIB位图文件的格式、读取、保存和显示
- 读取bmp图片的文件头,与位图信息头
- 位图文件
- WINAPI 读取位图Bitmap
- iOS图形
- 4日4日4日4日4日4日4日4日4日4日4日4日4日4日
- NewSQL、NoSQL与OldSQL之混合部署应用方案
- 打开文件或文件夹
- 表达式求值
- 读取位图文件
- 如果愛没有痛
- poj2499 由二叉树的根向左向右走几步到目标点
- 汇编代码(1)
- hdu 2041
- 【jquery】jquery.artDialog.js分析
- unity3D游戏开发二之unity编辑器一
- iOS 语言国际化
- NSDate 和 NSDateformate 那些事儿