下面是两点非常重要的注意事项:
1.windows 读取BMP文件是从下到上(此模式下Info.Height>0),从左到右的 2.windows 扫描BMP文件是每行以4个字节(0)为单位进行补齐,当我们处理24位位图时,要考虑此问题 例如 24位位图 宽度为 3 则实际每行内存占用位 3*24/8 + 3 字节
以下是24位 位图比较的代码,和上一篇文章的代码类似,主要是新增了BMP内存补齐检测。
//#pragma comment( linker, "/subsystem:windows" )
#include <fstream>
#include <map>
#include <string>
#include <iostream>
#include <windows.h>
using namespace std;
typedef unsigned char uvar8;
typedef unsigned int uvar32;
typedef unsigned short int uvar16;
typedef struct {
uvar8 Blue; /*蓝色所占比重*/
uvar8 Green; /*绿色所占比重*/
uvar8 Red; /*红色所占比重*/
uvar8 Reserved;
} Palette;
//定义bmp结构
uvar8 bfType[2]; /* 类型标志,总是BM */
typedef struct