目录
前言
因为有获取视频帧来做色彩空间转换的需求,需要判断视频帧是否有问题,这时候就想用位图的方式,保存图片来检测视频帧是否正常,最简单的格式就是bmp图片,所以特地研究了下linux的位图格式。
位图概述
位图(Bitmap)是windows显示图片的基本格式。所有的图片格式,在windows平台最终都要转换成bmp才能进行显示。正是因为没有经过压缩,所以BMP图片占的容量会很大,所以才会有jpg,png等格式的图片吧!
一个完整的bmp位图文件,可以分为文件信息头,位图信息头和**RGB颜色阵列三个部分。文件信息头主要包含“是否是BMP文件”,文件的大小等信息。而位图信息头则主要包含bmp文件的位图宽度,高度,位平面,通道数等信息。而RGB颜色阵列,里面才真正包含我们所需要的bmp位图的像素数据。bmp位图的颜色阵列部分,像素数据的存储是以左下角为原点,按照从左到右,从下到上的顺序,依次进行像素数据的存储。——carson2005
就是说,数据阵列中的第一个字节表示位图左下角的像素,而最后一个字节表示位图右上角的像素。
位图格式
一个完整的bmp位图文件,可以分为文件信息头、位图信息头和RGB颜色阵列三部分。
- 文件信息头
typedef struct BitMapFileHeader
{
//unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
} BitMapFileHeader_t;
- 位图信息头
typedef struct BITMAPINFOHEADER
{
HI_U32 biSize;
HI_U32 biWidth;
HI_S32 biHeight;
HI_U16 biPlanes;
HI_U16 biBitCount;
HI_U32 biCompression;
HI_U32 biSizeImage;
HI_U32 biXPelsPerMeter;