BMP图片的解析,关于压缩方式
在做一个显示bmp图片到lcd屏的时候,发现有些bmp图显示不对.
同样是16bit bmp却有差异.
就查了一下格式.
bmp文件格式
位图文件的组成 |
结构名称 |
符号 |
位图文件头(bitmap-file header) |
BITMAPFILEHEADER |
bmfh |
位图信息头(bitmap-information header) |
BITMAPINFOHEADER |
bmih |
彩色表(color table) |
RGBQUAD |
aColors[] |
图像数据阵列字节 |
BYTE |
aBitmapBits[] |
偏移量 |
域的名称 |
大小 |
内容 |
|
图像文件 头 |
0000h |
标识符(Identifier) |
2 bytes |
两字节的内容用来识别位图的类型: ‘BM’ : Windows 3.1x, 95, NT, … ‘BA’ :OS/2 Bitmap Array ‘CI’ :OS/2 Color Icon ‘CP’ :OS/2 Color Pointer ‘IC’ : OS/2 Icon ‘PT’ :OS/2 Pointer |
0002h |
File Size |
1 dword |
用字节表示的整个文件的大小 |
|
0006h |
Reserved |
1 dword |
保留,设置为0 |
|
000Ah |
Bitmap Data Offset |
1 dword |
从文件开始到位图数据开始之间的数据(bitmap data)之间的偏移量 |
|
000Eh |
Bitmap Header Size |
1 dword |
位图信息头(Bitmap Info Header)的长度,用来描述位图的颜色、压缩方法等。下面的长度表示: 28h - Windows 3.1x, 95, NT, … 0Ch - OS/2 1.x F0h - OS/2 2.x |
|
0012h |
Width |
1 dword |
位图的宽度,以像素为单位 |
|
0016h |
Height |
1 dword |
位图的高度,以像素为单位 |
|
001Ah |
Planes |
1 word |
位图的位面数 |
|
图像 信息 头
|
001Ch |
Bits Per Pixel |
1 word |
每个像素的位数 1 - Monochrome bitmap 4 - 16 color bitmap 8 - 256 color bitmap 16 - 16bit (high color) bitmap 24 - 24bit (true color) bitmap 32 - 32bit (true color) bitmap |
001Eh |
Compression |
1 dword |
压缩说明: 0 - none (也使用BI_RGB表示) 1 - RLE 8-bit / pixel (也使用BI_RLE4表示) 2 - RLE 4-bit / pixel (也使用BI_RLE8表示) 3 - Bitfields (也使用BI_BITFIELDS表示) |
|
0022h |
Bitmap Data Size |
1 dword |
用字节数表示的位图数据的大小。该数必须是4的倍数 |
|
0026h |
HResolution |
1 dword |
用像素/米表示的水平分辨率 |
|
002Ah |
VResolution |
1 dword |
用像素/米表示的垂直分辨率 |
|
002Eh |
Colors |
1 dword |
位图使用的颜色数。如8-位/像素表示为100h或者 256. |
|
0032h |
Important Colors |
1 dword |
指定重要的颜色数。当该域的值等于颜色数时,表示所有颜色都一样重要 |
|
调色板数据 |
0036h |
Palette |
N * 4 byte |
调色板规范。对于调色板中的每个表项,这4个字节用下述方法来描述RGB的值:
|
图像数据 |
0436h |
Bitmap Data |
x bytes |
该域的大小取决于压缩方法,它包含所有的位图数据字节,这些数据实际就是彩色调色板的索引号 |
后来打印了一下头信息的各个值发现,压缩方式不一样
Compression =0 或
Compression=3.
Compression=0时 rgb565使用3个字节即,R、G、B各占1个字节,共3个字节。
而
Compression=3时R、G、B总共占2个字节。 调色板数据会存储三个掩码。 RGB565,这三个值是0xF800、0x07E0、0x001F。
即取出2个字节的图像数据与上0xF800就是R
其他压缩方式较复杂,没有使用到。
转载于:https://www.cnblogs.com/fengeryi/p/3658519.html
BMP图片的解析,关于压缩方式相关推荐
- 游戏图片推荐格式及压缩方式。TexturePacker、UE4、 贴图合并节约批次、贴图寻址、MipMap(一、参数设置)
就手机游戏而言.图片资源能否合理应用就基本上决定给了游戏包体的大小.和向下兼容的极限机型(瞎说的). 所以今天就缩小图片对游戏影响,缩小游戏在内从的大小,缩小游戏的包体. 然后对常用的集中缩小包体的方 ...
- STM32 BMP图片解析
重新优化了bmp图片解析,这次主要针对有大容量RAM的STM32F4以及F7,使用的是文件加载到内存后解析,并将解析后的RGB数据存储到另外一块内存区域,支持16位(RGB555),24位(RGB88 ...
- ZYNQ系列之-----SD卡中BMP图片读取+ddr读写验证
1.前提: sd卡挂载在ps测,并且使用的ZYNQ系统.和前文是一样的. ZYNQ系列之-----SD卡读写文件_hhh_fpga的博客-CSDN博客 2.设备与软件 软件: vivado 2021. ...
- BMP位图格式的内存存储方式
最近在捣鼓Kinect 存储的 raw data,使用 kinect输出并保存红外数据流 ColorImageFormat.InfraredResolution640x480Fps30.其红外数据流的 ...
- linux bmp图片怎么转换成ppm,[转载]图片解析 ppm图片bmp图片格式
最近用qt编写两个小程序,一个是解析ppm格式的图片,一个是将ppm格式的图片转存为bmp格式图片 首先要明确ppm和bmp格式图片的头 ppm:头部分由三部分组成,这三部分由回车或换行分割,但PPM ...
- JAVA C# Zxing生成的二维码数据转换为1bit的bmp下发到点阵终端。QRCode去白边,以bmp格式字节流发送,BMP图片解析
BMP图像文件完全解析 - 知乎 注意: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中.越向后地址越高,比如00 01 02,02的地址是2,是高. BMP文 ...
- Android 图片压缩之多种压缩方式结合使用
原文地址:http://www.jianshu.com/p/e9e1db845c21 如题,多种压缩方式常用的有尺寸压缩.质量压缩以及通过JNI调用libjpeg库来进行压缩,三种方式结合使用实现指定 ...
- 【图像处理基础】BMP格式图片的解析
最近一直在用bmp格式的图片进行图像算法的学习,对bmp来做一个整理,以备后面使用. BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关 ...
- 深入理解BMP图片数据存储方式
说明: 以下这些是本人自己总结出来的,因为自己在图像数据的存储方面总是模糊不清,这样是不利于开发的,只有知道底层原理才能解决任何问题,通过下面的知识,你就可以触类旁通,解决bmp图片在lcd上的任意显 ...
最新文章
- 高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框
- 小心DLL链接静态库时的内存错误
- 对话诸葛 io 孔淼:数据分析如何做,才能圈住用户?
- 免费资源下载:超酷超全的PSD按钮资源
- 按键精灵脚本学习-关于天猫抢红包
- 麦肯锡:数字化转型四步法!
- 声卡测试音频100Hz~1KHz
- 在ubuntu系统中安装sublime
- Unity中的文件夹和路径
- FPGA-小梅哥时序传输模型
- mac常见问题(二) MAC需要安装杀毒软件吗?
- 计算机平面设计要学语数英吗,《计算机平面设计与制作》课程标准规范.doc
- 启动virtualbox虚拟机显示Attempted to kill the idle task错误
- 关于Java事务原理的探讨
- [软件更新]SRS Audio Sandbox v1.9.0.4 汉化版
- Elasticsearch 未授权访问漏洞验证及修复
- 菜狗的reverse学习——攻防世界xxxorrr
- TCP/ip 协议端口范围 详解
- 解决oracle11卸载,Oracle11完全卸载方法
- 各代iphone尺寸_iPhone X尺寸多大?三款iPhone新机尺寸对比!