- 1、本文档共131页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++基础知识分享
目录
C++基础知识分享 1
BMP图片格式分析(超详细) 2
C++ STL简介 9
C++ 初始化列表详解 12
C++ 异常机制详解 16
C++ 深入理解模板实现多态思想
C++实现图片格式转换 33
C++实现窗口截图 35
C/C++ string介绍(非常详细)
C/C++ 正则表达式 regex库介绍(详细版)
C/C++ 获取当前时间(最全方法)
C/C++ 遍历文件夹(最全方法)
C/C++宽窄字符转换与输出(多种方法)
C/C++文件读写(最全方法,多种实现)
C/C++智能指针详解
C/C++网络编程详解(Windows版)
BMP图片格式分析(超详细)
BMP图片格式分析(超详细)
文章目录
前言
一、BMP格式概览
二、实战分析bmp图片数据
前言
对学习C++感兴趣的可以看看这篇文章哦:C/C++教程
BMP图片大家见的应该也比较多,它是一种非常基本的图片格式
因为最近对C++生成二维码比较感兴趣,用第三方库可以很容易得到二维码的信息
但还需要将生成的二维码源数据保存为图片,而BMP结构稍微简单一点,所以便研究了一下
一、BMP格式概览
BMP文件格式还是比较简单的,总共分为四部分:
1. BITMAPFILEHEADER结构体,
2. BITMAPINFOHEADER结构体,
3. RGBQUAD结构体(这个结构体可以有,也可以没有),
4. DIB数据区。(Device-Independent Bitmap,设备无关位图)。
在继续探究这些格式之前,我们还需要明白一个概念,即:RGB (Red,Green,Blue)三原色,我
们图片中的像素就是用这三种颜色构成的
我们常看到的8位色,16位色,24位色和32位色这些,实际指的就是用多少位来表示一个颜色(又
称位深度)
位 指的是二进制的一位,一个字节(char)有8位
第 1 页 /共 129 页
BMP图片格式分析(超详细)
8
以8位色为例,即一个char,可以表示的范围为:0 - 2 -1,即256种颜色,如果是1位色,那就只
能表示两个颜色,即黑白图片
目前主流的是24位色和32位色,所以这里不讨论8位数和16位色
事实上第三个结构体RGBQUAD就是为8位、16位色等较低位数准备的,使用起来也更麻烦
本文以24位色为主。即RGB三原色,各占8位大小,即各占一个字节
如果是32位,则RGB三原色各占8位,还剩下8位用于描述透明度的,即:rgba最后的a,
Alpha透明度
综上,我们需要了解的就只有前两个结构体,和最后的DIB数据区了
首先来看第一个结构体定义:
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //BMPBM0x4d42
DWORD bfSize; //
WORD bfReserved1; //
WORD bfReserved
文档评论(0)