BMP格式解析

来源:互联网 发布:js数组的indexof 编辑:程序博客网 时间:2024/06/07 12:59
BMP图像的格式很简单。
按照顺序为:位图文件头->位图信息头->调色板信息->颜色信息。
位图文件结构头:
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
位图信息头结构为:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; // 位图信息头大小 为40
LONG biWidth; // 像素上的位图宽度
LONG biHeight; // 像素上的位图高度
WORD biPlanes;
WORD biBitCount; // 多少位表示一个像素颜色
DWORD biCompression;
DWORD biSizeImage; // 位图中描述像素颜色的数据的大小,这个是以4个字节为单位的,不足是0补
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed; // 多少个颜色使用了
DWORD biClrImportant;// 多少个颜色是重要的
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
位图信息按照位图的色的不同而不同,例如24位时,颜色信息中,三个字节表示的是一个位图像素点的RGB值。


完全可以解析BMP文件中的格式来获得像素点的值。

比如。你可以得到几个矩形范围类的像素点的值。然后重新根据这个矩形范围类的像素值重新构造一个BMP文件格式。
重新写入bmp文件头,bmp信息头,bmp调色板,bmp像素信息(这个信息是你要获取的区域内的像素信息,可以直接获取原图中的像素的值获得)。bmp文件头,bmp信息头可以根据实际情况更改,比如说,位图的宽度,位图的高度,位图像素信息的大小,这些都可以直接计算出来。

注意:bmp是按照图像从下向上,按行扫描得到的图像的,而且为像素信息中,如果一行中描述该行的所有像素信息的字节数不是4的整数倍时,要用0补齐,凑出4的整数倍。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 生完宝宝肚子还是很大怎么办 生完孩子小腹大怎么办 生完孩子肚皮松怎么办 生过孩子肚子松怎么办 生完孩子肚皮痒怎么办 生完小孩肚子松弛怎么办 生了孩子肚子大怎么办 嫁到别的省户口怎么办 孕中期假性宫缩怎么办 频繁的假性宫缩怎么办 显卡风扇不转了怎么办 老是想不好的事怎么办 做人工受孕多囊怎么办 子宫内有囊肿该怎么办 子宫长了个囊肿怎么办 怀孕后不想要该怎么办 20多岁雌激素低怎么办 生完小孩后子宫下垂怎么办 取环之前同房了怎么办 做人流后又怀孕怎么办 仓鼠长了个肿瘤怎么办 过敏留下的黑印怎么办 脸上痘痘发炎了怎么办 脸上皮肤红痒怎么办啊 皮肤有一片红痒怎么办 脸过敏期间很干怎么办 怀孕了用了消糜栓怎么办 乳酸杆菌少或无怎么办 怀孕了白带有异味怎么办 怀孕清洁度iv度怎么办 怀孕了下面有异味怎么办 孕妇尿白细胞1是怎么办 药流期间喂奶了怎么办 20多岁卵巢早衰怎么办 3岁儿童肚子胀气怎么办 肚子又胀又痛怎么办 1岁宝宝肚子胀气怎么办 2岁宝宝肚子胀气怎么办 产后腰粗肚子大怎么办 发烧后腹泻拉水怎么办 又吐又拉还发烧怎么办