美文网首页程序员
BMP位图结构调色板说明

BMP位图结构调色板说明

作者: mjjackey | 来源:发表于2020-09-09 18:03 被阅读0次

多少位位图并不是指每一个颜色该用多少位表示,对于颜色来说,它始终都是24位(RGB),或者是32位(RGBA),而是指该位图每个像素点用多少位表示,若是n位位图,则该位图每个像素点用n位表示,该位图共有2^n种颜色(对应于调色板的颜色索引)。对于小于24位的位图,一个像素点所用的位数不足以表示一个颜色,所以要用调色板,而每一像素所用的位数存放的是对应于调色板的索引,所以有多少位就能表示2^n种颜色;

比如:

有一个长宽各为200个象素,颜色数为16色的彩色图,每一个象素都用R,G,B三个分量表示,因为每个分量有256个级别,要用8位(bit),即一个字节(byte)来表示,所以每个象素需要用3个字节。整个图象要用200*200*3,约120k字节,可不是一个小数目呀!

如果我们用下面的方法,就能省的多。 因为是一个16色图,也就是说这幅图中最多只有16种颜色,我们可以用一个表:表中的每一行记录一种颜色的R,G,B值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。举个例子,如果表的第0行为255,0,0(红色),那么当某个象素为色时,只需要标明0即可。 让我们再来计算一下:16种状态可以用4位(bit)表示,所以一个象素要用半个字节。整个图象要用200*200*0.5,约20k字节,再加上表占用的字节为3*16=48字节。整个占用的字节数约为前面的1/6,省很多吧。

这张RGB的表,即是我们常说的调色板(Palette),另一种叫法是颜色查找表LUT(LookUpTable),似乎更确切一些。

若对于24位或32位位图,它就不需要调色板了,因为24位足可以放对应的颜色值了,每个字节对应于R,G,B分量的值。

计算每行像素所占字节数:

#define BYTE_PER_LINE(width, bitCount) ((((width)*(bitCount)+31)/32)*4)

其中width是每行像素数,bitCount是每个像素所占的位数,为什么要乘以4除以32呢?因为Windows规定图像文件中一个扫描行所占的字节数必须是4的倍数(即以字为单位,1个字4个字节),不足的以0填充,乘以4保证是4的倍数,除以32保证实际字节数不变(即实际除以8,一个字节是8位),加31是为了多余的整数不够32除另外加的。

相关文章

  • BMP位图结构调色板说明

    多少位位图并不是指每一个颜色该用多少位表示,对于颜色来说,它始终都是24位(RGB),或者是32位(RGBA),而...

  • BMP位图格式解析

    一般BMP图像文件由以下4部分组成:位图文件头、位图信息头、调色板、实际的位图数据。位图文件头数据结构: 位图信息...

  • 图像编程学习历程-20161212-bmp文件的结构

    bmp 文件的组成结构 位图文件头 (bitmap-file header)位图信息头 (bitmap-infor...

  • Bmp位图的基本结构

    1 BMP BMP(Bit Map)是最常用的图片格式之一。一般由四部分构成: 其中调色板是非必须的,在24位位图...

  • Electron笔记 5 Bitmap 构造

    Bitmap,通常称为位图文件,是Windows标准格式图形文件,后缀为".bmp"。 位图文件结构简单,每个点/...

  • Bmp格式解析以及应用

    Bitmap数据结构 BMP文件的数据可分为四个部分 Bmp文件头:提供文件的格式,大小,位图数据的起始偏移 ...

  • 常用的几种图片格式

    一、BMP格式: BMP是英文Bitmap(位图)的简写,它是windows系统下的标准位图格式,其包含的图像信息...

  • Bmp图片的结构剖析与代码处理实践[Ruby]

    预览: 一、BMP文件格式详解(BMP file format) BMP文件格式,又称为Bitmap(位图)或是D...

  • Android中图片的压缩方法

    Bitmap Android中图片是以Bitmap(位图)形式存在,位图常见的文件格式有:.bmp .jpg .p...

  • ps学习笔记-图像格式

    常见图片格式有bmp,jpeg,gif,tif,psd。 度娘有话说: BMP是英文Bitmap(位图)的简写,它...

网友评论

    本文标题:BMP位图结构调色板说明

    本文链接:https://www.haomeiwen.com/subject/hircsktx.html