读bmp文件信息结构
来源:互联网 发布:windows whistler2267 编辑:程序博客网 时间:2024/04/28 00:04
CString bmpfileName; //bmp图像路径。
CFile bitmapFile; //文件操作类。
bitmapFile.Open(fileName,CFile::modeRead) //打开图像文件。
BITMAPFILEHEADER m_pBmpFileHeader=(BITMAPFILEHEADER*) new char [sizeof
(BITMAPFILEHEADER)];//给文件信息头分配内存
bitmapFile.Read(m_pBmpFileHeader,sizeof(BITMAPFILEHEADER));//读入文件信息头信息
BITMAPINFOHEADER m_pBmpInfoHeader=(BITMAPINFOHEADER*) new char [sizeof
(BITMAPINFOHEADER)];//给BMP信息头分配内存
bitmapFile.Seek( 14,CFile::begin );//文件信息头占用14个字节。
bitmapFile.Read(m_pBmpInfoHeader,sizeof(BITMAPINFOHEADER));
if(m_pBmpFileHeader->bfType!=0x4D42)//判断文件是不是位图文件
{
MessageBox("This is not a bitmap file!!");
bitmapFile.Close();
return;
}
if(m_pBmpInfoHeader->biCompression!=0)//判断图像是不是压缩的,
{
MessageBox("This system only support Un-compression!!");
bitmapFile.Close();
return;
}
DWORD nPaletteSize ;//位图是位数。
switch(m_pBmpInfoHeader->biBitCount)//判断颜色的位数
{
case 1:
nPaletteSize=2;
break;
case 4:
nPaletteSize=16;
break;
case 8:
nPaletteSize=256;
break;
case 24:
nPaletteSize=0;//当为真彩色时没有颜色表,所以为0
break;
default:
MessageBox("This color is not valid!!");
bitmapFile.Close();
return;
}
//下面根据不同的图像位数,计算调色板的大小
m_pBmpInfo=(BITMAPINFO*)new char [sizeof(BITMAPINFOHEADER)+nPaletteSize*sizeof
(RGBQUAD)];//根据调色板大小给位图分配内存
bitmapFile.Read(&(m_pBmpInfo->bmiColors[0]),nPaletteSize*sizeof(RGBQUAD));//调入调
色板数据到位图信息
m_pBmpInfo->bmiHeader=*m_pBmpInfoHeader;//给位图信息的位图信息头赋值
DWORD bytesPerLine=m_pBmpInfoHeader->biWidth*(m_pBmpInfoHeader->biBitCount/8);//计
算每行图像所占的字节数
if(bytesPerLine%4!=0)//当宽度为奇数时
bytesPerLine=(bytesPerLine/4+1)*4;//对每行图像进行对齐
/*unsigned int */size=m_pBmpInfoHeader->biHeight*bytesPerLine;//计算图像数据所占大
小
bitmapFile.Seek( 45 ,CFile::begin );//所有信息头占用45个字节。
BYTE* pDib=(BYTE*)new char[size];//给图像数据分配内存
bitmapFile.Read(pDib,size);//读入位图数据
bitmapFile.Close();
Int width=m_pBmpInfoHeader->biWidth;//得到图像数据的宽度
Int height=m_pBmpInfoHeader->biHeight;//得到图像数据的高度
^@^……
- 读bmp文件信息结构
- BMP图片文件结构重要信息介绍
- BMP文件信息
- BMP文件结构
- BMP文件结构分析
- BMP文件结构
- BMP文件结构
- BMP文件结构详解
- BMP文件结构
- BMP文件结构[网摘]
- BMP文件结构详解
- BMP文件结构
- BMP文件结构
- BMP文件结构
- BMP文件结构
- BMP文件结构解析
- BMP文件结构
- BMP文件结构
- 控制台输入函数的用法
- 使用 Eclipse 远程调试 Java 应用程序
- 位图结构
- SQL HAVING 子句
- Slickedit 导致系统挂起或死机的解决方案
- 读bmp文件信息结构
- 显示位图
- c++不得不吐之槽-第0条 现在你用的是C++
- CfileDlg与文件操作
- linux_快捷键
- html5本地存储localStorage实战
- 文件操作
- 工厂模式(Factory Method)
- Python 3.2/2.7 学习