bmp图片文件格式
bmp文件格式
使用
主要规则:(以24位bmp为例)
- 文件实际大小 头信息+像素+(win的垃圾数)
- 头信息 54字节
- 像素 24位(三字节)为:RGB 一个颜色共三个字节
- win的垃圾数:(Windows默认的扫描的最小单位是4字节,要求数据对齐)
在win中创建的.bmp文件,如果宽不能被4整除(影响行数据)(高没有影响),
则会在每一'行末尾'填充随机数,使得能被4整除;
例:像素大小:201100->存储大小:(201*3)100=603*100(不能被4整除)
是win将自动每行填充一个字节:603->604
使用事项:
- 读取时,先跳过54字节的头信息
- 读取颜色时,注意RGB的顺序读取
- 读取颜色时,应当按行读取,防止读入垃圾数(不应当偷懒整块读取)
(或者,传输的文件宽必须能被4整除)
原理
.bmp文件概念
(.bmp)不是非常常见的图片格式,文件太大,不方便压缩,很多网络操作并不支持使用(还是太大了)
但是,(.bmp)文件格式清晰且简单,图像数据完整且直接以二进制显示,非常适合设备操作和相关学习
(.bmp)(全称:bitmap)是win中的标准图像文件格式,可分为两类:
(DDB)设备相关位图(Device Dependent Bitmap)//适用特定设备的图像处理
(DIB)设备无关位图(Device Independent Bitmap)//适用跨设备共享和传输的图像处理
两者在设备中使用都很广
(.bmp)图像深度可以选择:
1bit(单色)/2bit(4色,CGA)/4bit(16色,VGA)/16bit(增强色)/24bit(真彩色,RGB)/256bit等
24bit(三字节)//以RGB顺序排列,各占一个字节,通过三色调成任意一色
文件头(头信息)
文件头包括:bmp文件头和位图信息头(14 + 40 = 54)
-
bmp文件头(bmp file header):14字节
bfType: 2字节,文件类型//0x4D42->ASCII:BM//一般不变
bfSize: 4字节,文件大小//0x0004B436->308278bit->54byte+301KBbfReserved1: 2字节,保留位,必须设为0
bfReserved1: 2字节,保留位,必须设为0bfOffBits: 4字节,从头到位图数据的偏移(图片信息开始位置)
-
位图信息图(bitmap information):40字节
biSize: 4字节,信息头大小//0x00000028->40//一般不变
biWidth: 4字节,像素单位的宽
biHeight: 4字节,像素单位的高(数据为正->倒立/数据为负->正向)biPlanes: 2字节,颜色平面数//0x0001->1//一般不变
biBitCount: 2字节,比特数/像素数(色彩深度),//24bit例:0x0018->24biCompression:4字节,图像的压缩类型,0(BI_RGB)表示不压缩//一般不变
biSizeImages:4字节,原始位图数据的大小,当用(BI_RGB)格式时,可以设置为0
biXPelsPerMeter: 4字节,横向分辨率
biXPelsPerMeter: 4字节,纵向分辨率biClrUsed: 4字节,颜色索引数,从biBitCount计算,可以设置为0(不表示没有颜色)//24bit->0xFFFFFF种色
biClrimportant: 4字节,重要颜色索引数,可以设置为0(每种颜色都重要)
原始位图数据
实践
学习引用:
浅谈图像格式 .bmp
BMP格式详解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)