BMP转YUV文件

一.bmp文件介绍

    1.简介

BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用广泛。它采用位映射存储格式,除了图像深度可选以外,在绝大多数应用中不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit、16bit及24bit。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。

2.文件格式

BMP(bitmap) 文件由文件头、位图信息头、颜色信息和图 形数据 4 部分组成。文件头主要包含文件的大小、文件类型、 图像数据偏离文件头的长度等信息;位图信息头包含图像的 尺寸信息、图像用几个比特数值来表示一个像素、图像是否 压缩、图像所用的颜色数等信息。颜色信息包含图像所用到 的颜色表,显示图像时需用到几个颜色表来生成调色板,但 如果图像为真彩色,即图像的每个像素用 24 个比特来表示, 文件中就没有这一块信息,也就不需要操作调色板。文件中 的数据块表示图像的相应像素值,需要注意的是:图像的像 素值在文件中的存放顺序为从左到右,从下到上,也就是说, 在 BMP 文件中首先存放的是图像的最后一行像素,最后才存 储图像的第一行像素,但对于同一行的像素,则是按照先左边后右边的顺序存储的;另外一个需要关注的细节是:文件 存储图像的每一行像素值时,如果存储该行像素值所占的字 节数为 4 的倍数,则正常存储;否则,需要在后端补 0,凑足 4 的倍数

     2.1位图头文件

//第一部分为位图文件头 BITMAPFILEHEADER,是一个
结构,其定义如下:
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; // 位图文件的类型,必须为 BM
DWORD bfSize; // 位图文件的大小,字节单位
WORD bfReserved1; // 位图文件保留字,必须为 0
WORD bfReserved2; // 位图文件保留字,必须为 0
DWORD bfOffBits; // 位图文件头到数据的偏移
}BITMAPFILEHEADER ;

     2.2位图信息头

//第二部分为位图信息头 BITMAPINFOHEADER,也是一
个结构,其定义如下:
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize; // 该结构所占字节数
LONG biWidth; // 位图的宽度,像素单位
LONG biHeight; // 位图的高度,像素单位
WORD biPlanes; // 目标设备的位面数,必须为 1
WORD biBitCount; // 颜色深度,即每个像素所占的
位数
DWORD biCompression; // 位图的压缩类型
DWORD biSizeImage; // 位图的大小,字节单位
LONG biXPelsPerMeter; // 位图水平分辨率
LONG biYPelsPerMeter; // 位图的垂直分辨率
DWORD biClrUsed; // 位图实际使用的颜色表中
颜色数
DWORD biClrImportant; // 位图显示中比较重要的颜
色数
} BITMAPINFOHEADER;

    2.3调色板

第三部分为调色板 RGBQUAD。当然这是对那些需要调
色板的位图文件而言的。有些位图,如真彩色图,是不需要
调色板的,BITMAPINFOHEADER 后直接是位图数据。
颜色表实际上是一个数组,共有 biClrUsed 个元素(如果
该值为零,则有 2biBitCount 个元素)。数组中每个元素的类
型是一个 RGBQUAD 结构,占 4 个字节,其定义如下:
typedef struct tagRGBQUAD
{
BYTE rgbBlue; // 该颜色的蓝色分量
BYTE rgbGreen; // 该颜色的绿色分量
BYTE rgbRed; // 该颜色的红色分量
BYTE rgbReserved; // 保留值
} RGBQUAD;

位图信息头和颜色表组成位图信息结构 BITMAPINFO, 其定义如下:

typedef struct tagBITMAPINFO
{
BITMAPINFOHEADER bmiHeader; // 位图信息头
RGBQUAD bmiColors[1]; // 颜色表
} BITMAPINFO

二.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值