解题思路:
1.待处理的对象:
待处理的对象是BMP位图,实际上只是一种类型的文件流,和字符流什么的没有区别,这次练习的核心是为了锻炼出惊人的操作读写流的能力,所以,就将其当作01流就可以了。因此关于BMP最重要的就是要理解流的什么地方是什么,实际上文档上已经说得比较详细了。在此不再赘述BMP的基本理论,只重点讨论24位和32位位图。这里的位,实际上就是指一个像素格所占的位数(bit),需要知道的是1字节(Byte)=8bit,因此我们不得不回顾c++基本数据类型的占位。
2.c++基本数据类型的占位
char :1byte = 8bit
short:2byte = 16bit
int :4byte = 32bit
long :4byte = 32bit
所以下面的WORD和DWORD类型其实占位是一样的,可是为了保持文档中的叙述方式,再加上基本数据占位在不同编译器中有所差异,所以就这样吧
...
3.待处理对象的进一步讨论
从作业的文档中提取出来的有用的信息是
(1)BMP有一个文件头,见下面Head类的定义。这一串流占位14个字节(自己数)
(2)BMP有一个信息头,见下面Indo类的定义。这一串流占位40个字节(到这里是不是明白为什么文件头中图像数据的偏移一般是54了?)
(3)图像的像素数据,