最近一直在用bmp格式的图片进行图像算法的学习,对bmp来做一个整理,以备后面使用。

BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。

BMP文件的数据按照从文件头开始的先后顺序分为四个部分:

bmp文件头(bmp file header):提供文件的格式、大小等信息

位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息

调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表

位图数据(bitmap data):就是图像数据啦

从C语言中对他们的定义可以看一下

(1)bmp文件头(占14字节

typedef struct tagBITMAPFILEHEADER {WORD    bfType; //文件的类型,占2个字节DWORD   bfSize; //文件的大小,占4个字节WORD    bfReserved1; //保留位1,占2个字节WORD    bfReserved2; //保留位2,占2个字节DWORD   bfOffBits; //从文件开始到位图数据开始之间的数据量,称为偏移量:偏移量大小=位图文件头大小+位图信息头大小+调色板大小。占4个字节
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;

(2)位图信息头(占40字节

typedef struct tagBITMAPINFOHEADER{DWORD      biSize; //位图信息头的大小,4个字节。LONG       biWidth; //位图的宽度,单位为像素点,4个字节。LONG       biHeight; //位图的长度,单位为像素点,4个字节。WORD       biPlanes; //位图的位面数,总是1,2个字节。WORD       biBitCount; //位图的像素位数,即每个像素点所占的位数,2个字节。DWORD      biCompression; //位图的压缩说明:0 - 不压缩 (使用BI_RGB表示)1 - RLE 8-使用8位RLE压缩方式(用BI_RLE8表示)2 - RLE 4-使用4位RLE压缩方式(用BI_RLE4表示)3 - Bitfields-位域存放方式(用BI_BITFIELDS表示),4个字节。DWORD      biSizeImage; //位图数据的大小,必须是4的倍数,4个字节。LONG       biXPelsPerMeter; //用像素/米表示的水平分辨率,4个字节。LONG       biYPelsPerMeter;//用像素/米表示的垂直分辨率,4个字节。DWORD      biClrUsed; //文件使用的颜色数。如果为0,则表示使用了全部可能的颜色。如8-比特/象素表示为0x100或者 256,4个字节。DWORD      biClrImportant; //指定重要的颜色数。当该域的值等于颜色数时(或者等于0时),表示所有颜色都一样重要,4个字节。
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;

(3)调色板(调色板大小可选,大小为N*4(bytes),其中N表示颜色的数目

typedef struct tagRGBQUAD {BYTE    rgbBlue;//蓝色分量BYTE    rgbGreen;//绿色分量BYTE    rgbRed;//红色分量BYTE    rgbReserved;//蓝保留位
} RGBQUAD;

(4)位图数据(根据图片不同所占大小而不同):

位图数据就是对应的数组,可以有多种格式,RGB、YUV、HSV等等。

【图像处理基础】BMP格式图片的解析相关推荐

  1. 【数字图像处理】一.MFC详解显示BMP格式图片

    本文主要是讲述<数字图像处理>系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C++和MFC显示BMP格式,主要结合自己的<数字图像处理>课程和以前的项目叙述讲解 ...

  2. MFC详解显示BMP格式图片

    本文主要是讲述<数字图像处理>系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C++和MFC显示BMP格式,主要结合自己的<数字图像处理>课程和以前的项目叙述讲解 ...

  3. C语言读取和存储bmp格式图片

    开发过程中有时候需要解析bmp数据,下面先简单介绍bmp数据组成,后面附上C语言读取和存储bmp格式图片代码. 典型的位图文件格式通常包含下面几个数据块: BMP文件头:保存位图文件的总体信息. 位图 ...

  4. 3_HEIF/heic格式图片文件解析(20190107)

    3_HEIF/heic格式图片文件解析(20190107) HEIF/heic格式图片文件解析(20190107) 文章目录 参考: https://zhuanlan.zhihu.com/p/3466 ...

  5. bmp文件格式_一次性解决CAD转换成BMP格式图片的问题

    关于BMP格式图片,可能很多小伙伴都遇到得比较多,但在这里还是稍微解释一下吧. 它是Windows操作系统中的标准图像文件格式,大家都知道BMP格式的图片都非常大,那是因为它没有经过任何压缩. 当然, ...

  6. android 将bitmap存为 bmp格式图片大小,把bitmap保存成 BMP的格式 并且位深度为1

    生成图片的要求:图像格式采用单色位图文件格式(BMP)  要求bmp的位深度为1 参考: 代码有点小瑕疵 : bitmap的图片宽度要求是:8的整数倍 /** * 将Bitmap存为 .bmp格式图片 ...

  7. 将BMP 格式图片转换为 JPEG 格式【c语言】

    源码链接: https://blog.csdn.net/qq_44394952/article/details/122587475?spm=1001.2014.3001.5502. 一.任务及目标 利 ...

  8. 关于BMP格式图片在终端显示的具体做法(超详细)

    关于BMP格式图片在终端显示的具体做法(超详细) #include <stdio.h> #include <sys/mman.h> #include <sys/types ...

  9. 如何批量将 bmp 格式图片转换转换为 jpg

    概要:png 和 jpg 这两种格式的图片相信大家都非常熟悉,但是 bmp 格式的图片可能大家接触得并没有那么多,bmp 是 Windows 操作系统中的标准图像文件格式,能够被多种 Windows ...

最新文章

  1. springboot 主键重复导致数据重复_Springboot实现防重复提交和防重复点击(附源码)...
  2. R语言使用car包的outlierTest函数通过假设检验的方法检测回归模型中的异常值(outlier)、输出异常值对应的统计量、p值以及Bonferonnii校正p值
  3. 双11个性化推荐背后,阿里云“舜天”如何应对百亿次挑战?
  4. python各个解释器的用途-Python解释器有哪些?Python解释器种类
  5. Python 安全编程学习总结
  6. 开源项目管理工具禅道ZenTaoPMS发布0.6 beta版本
  7. 如何使用facenet详解_如何使用冰箱更节能 使用冰箱节能技巧介绍【详解】
  8. AIoT时代的新思维
  9. linux命令cat过滤注释行和空白行
  10. 30个Linux安装案例,Make和Makefile说明,Linux工具,容器安全性,DevOps技巧等
  11. getAttribute和getParameter的区别
  12. Codeforces 1041C(贪心+set)
  13. C++数据类型之结构体的练习(用到结构体的赋值,利用结构体元素排序以及查找)
  14. Linux之动态网页---搭建论坛
  15. android recyclerview 滚动监听,Android RecyclerView(九)滑动监听综述
  16. html获取屏幕的高度,js如何获取屏幕高度
  17. SpringAOP原理分析
  18. 一文详解ERP的提取原理
  19. 22.11.16 IO day 8
  20. vim leader的使用

热门文章

  1. 采用74HC595驱动数码管实验
  2. VBA模块, Word中有关定位选择后对选中的内容进行查找替换
  3. 【Code】OJ推荐
  4. 2021-02-24 Multisim 14.0 场效应管单按键开关电路
  5. 谭玉刚从零开始之超硬核制造操作系统
  6. Pyqt5+Yolov5+Mss实现一个实时桌面检测软件
  7. 多元线性回归matlab实现
  8. [BUUCTF]第七天训练日志
  9. 全球与中国直流小型功率继电器市场现状及未来发展趋势
  10. mysql workbench安装教程_MySql可视化工具MySQL Workbench使用教程