我打开一张16色(4 bit)的图片,图象的大小为32 * 64(像素为单位),计算下来,由于4 bit可以表示一个像素,
那图象大小是 32 * 64 /2 = 1024(BYTE)那么
dwDibSize = file.GetLength() - sizeof(BITMAPFILEHEADER);
int nBIH = sizeof(BITMAPINFOHEADER);
int nRGB = m_nColorCount * sizeof(RGBQUAD);
m_dwDibSize = dwDibSize - sizeof(BITMAPINFOHEADER) - m_nColorCount * sizeof(RGBQUAD);照理说m_dwDibSize应该是1024才对!,可为什么m_dwDibSize是1026呢??想不明白,百思不得其解!怎么会多出两个字节呢??
那图象大小是 32 * 64 /2 = 1024(BYTE)那么
dwDibSize = file.GetLength() - sizeof(BITMAPFILEHEADER);
int nBIH = sizeof(BITMAPINFOHEADER);
int nRGB = m_nColorCount * sizeof(RGBQUAD);
m_dwDibSize = dwDibSize - sizeof(BITMAPINFOHEADER) - m_nColorCount * sizeof(RGBQUAD);照理说m_dwDibSize应该是1024才对!,可为什么m_dwDibSize是1026呢??想不明白,百思不得其解!怎么会多出两个字节呢??
解决方案 »
- installshield 2010 创建快捷方式时找不到目标文件。。。
- VC控制字符串输出的问题 format
- 在无源码的程序中添加按钮
- 我想比较两幅图片的色彩变化,请问怎么办?
- 请教菜单条加载图片的问题
- 为何打印内容在不同的打印机上打印预览和打印都不同了,怎样解决呢?
- 请问高手: VC6下如何打开另一个共享PC的文件? (加100分再问)
- 谁有Visual C++编程高手的源代码,进来看看,在线等待。高分相送
- ██> erehw(疯狂CS) 请进!!
- OICQ消息发送原理是怎样的?呵呵,谁能帮我解决这个问题。谢谢。
- 图象颜色转化的问题?
- CString 中英文混合字符串,FIND函数无法找到字符串中的英文,请各位前辈指点
file.GetLength是这个文件
这个是图像数据的真正开始位置。也就是说
BITMAPINFOHEADER和颜色表之后可能有其他信息。
还有cnzdgs说的图像结束后文件不需要结束。图像数据的大小在BITMAPINFOHEADER中有(如果压缩)。
什么意思?是不是m_dwDibSize是1026,但是图像数据是前1024字节,后两个字节是文件的信息?
我主要是想图像的Raw Data是1026字节中,图像中的1024字节是前1024字节呀?
为什么这里会是1026,应该是1024才是!真奇怪???
仔细的看看MSDN中的描述,你需要做的就是按照定义的规则读取,这样你应该不会用到各种不是必须的信息。
而其他的软件可能在这里加入私有的信息。