在做一个显示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的值:

  • 1字节用于蓝色分量
  • 1字节用于绿色分量
  • 1字节用于红色分量
  • 1字节用于填充符(设置为0)

图像数据

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图片的解析,关于压缩方式相关推荐

  1. 游戏图片推荐格式及压缩方式。TexturePacker、UE4、 贴图合并节约批次、贴图寻址、MipMap(一、参数设置)

    就手机游戏而言.图片资源能否合理应用就基本上决定给了游戏包体的大小.和向下兼容的极限机型(瞎说的). 所以今天就缩小图片对游戏影响,缩小游戏在内从的大小,缩小游戏的包体. 然后对常用的集中缩小包体的方 ...

  2. STM32 BMP图片解析

    重新优化了bmp图片解析,这次主要针对有大容量RAM的STM32F4以及F7,使用的是文件加载到内存后解析,并将解析后的RGB数据存储到另外一块内存区域,支持16位(RGB555),24位(RGB88 ...

  3. ZYNQ系列之-----SD卡中BMP图片读取+ddr读写验证

    1.前提: sd卡挂载在ps测,并且使用的ZYNQ系统.和前文是一样的. ZYNQ系列之-----SD卡读写文件_hhh_fpga的博客-CSDN博客 2.设备与软件 软件: vivado 2021. ...

  4. BMP位图格式的内存存储方式

    最近在捣鼓Kinect 存储的 raw data,使用 kinect输出并保存红外数据流 ColorImageFormat.InfraredResolution640x480Fps30.其红外数据流的 ...

  5. linux bmp图片怎么转换成ppm,[转载]图片解析 ppm图片bmp图片格式

    最近用qt编写两个小程序,一个是解析ppm格式的图片,一个是将ppm格式的图片转存为bmp格式图片 首先要明确ppm和bmp格式图片的头 ppm:头部分由三部分组成,这三部分由回车或换行分割,但PPM ...

  6. JAVA C# Zxing生成的二维码数据转换为1bit的bmp下发到点阵终端。QRCode去白边,以bmp格式字节流发送,BMP图片解析

    BMP图像文件完全解析 - 知乎 注意: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中.越向后地址越高,比如00  01  02,02的地址是2,是高. BMP文 ...

  7. Android 图片压缩之多种压缩方式结合使用

    原文地址:http://www.jianshu.com/p/e9e1db845c21 如题,多种压缩方式常用的有尺寸压缩.质量压缩以及通过JNI调用libjpeg库来进行压缩,三种方式结合使用实现指定 ...

  8. 【图像处理基础】BMP格式图片的解析

    最近一直在用bmp格式的图片进行图像算法的学习,对bmp来做一个整理,以备后面使用. BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关 ...

  9. 深入理解BMP图片数据存储方式

    说明: 以下这些是本人自己总结出来的,因为自己在图像数据的存储方面总是模糊不清,这样是不利于开发的,只有知道底层原理才能解决任何问题,通过下面的知识,你就可以触类旁通,解决bmp图片在lcd上的任意显 ...

最新文章

  1. 高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框
  2. 小心DLL链接静态库时的内存错误
  3. 对话诸葛 io 孔淼:数据分析如何做,才能圈住用户?
  4. 免费资源下载:超酷超全的PSD按钮资源
  5. 按键精灵脚本学习-关于天猫抢红包
  6. 麦肯锡:数字化转型四步法!
  7. 声卡测试音频100Hz~1KHz
  8. 在ubuntu系统中安装sublime
  9. Unity中的文件夹和路径
  10. FPGA-小梅哥时序传输模型
  11. mac常见问题(二) MAC需要安装杀毒软件吗?
  12. 计算机平面设计要学语数英吗,《计算机平面设计与制作》课程标准规范.doc
  13. 启动virtualbox虚拟机显示Attempted to kill the idle task错误
  14. 关于Java事务原理的探讨
  15. [软件更新]SRS Audio Sandbox v1.9.0.4 汉化版
  16. Elasticsearch 未授权访问漏洞验证及修复
  17. 菜狗的reverse学习——攻防世界xxxorrr
  18. TCP/ip 协议端口范围 详解
  19. 解决oracle11卸载,Oracle11完全卸载方法
  20. 各代iphone尺寸_iPhone X尺寸多大?三款iPhone新机尺寸对比!

热门文章

  1. 港中大教授研发DeepID人脸识别技术 准确率超99%
  2. Android Studio出现Unable to start the daemon process问题
  3. 微信7.0.4内测版大更新!漂流瓶彻底成为历史
  4. Android推送进阶课程学习笔记
  5. MOQ TIP1:简介加基础
  6. 2014百度研发真题及其解析-求比指定数大且最小的“不重复数”
  7. 为Zepto添加Slide动画效果
  8. 【命令init3/5】centos7切换图像界面和dos界面
  9. libjpeg编译使用详解
  10. linux开机自动启动