资源描述:
《逻辑调色板和系统调色板.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、逻辑调色板和系统调色板先来用通俗的语句讲解位图和调色板的概念。我们知道,自然界中的所有颜色都可以由红、绿、蓝(R,G,B)三基色组合而成。针对含有红、绿、蓝色成分的多少,可以对其分别分成0~255个等级,而红、绿、蓝的不同组合共有256×256×256种,因此约能表示1600万种颜色(16m色)。对于人眼而言,这已经是"真彩色"了。这就是24位图或其以上的位图比如32,,34之类的,,,这种位图的图像数据中的每个像素都用了三个字节来描述记录它.什么是图像数据?接下来会谈到一个位图文件结构,它包括文件头(用来说明文件),文件信息头(位图属性),,图像
2、数据(位图主体数据所在)对每个像素进行了(R,G,B)量化的图像就是位图,其在计算机中对应文件的扩展名一般为.bmp。既然用R,G,B的量化值就可以直接记录一张位图的所有像素,那我们需要调色板干什么呢?首先,我们可以计算完全利用(R,G,B)组合来存储一个800×600的位图所需要的空间为:800×600×3=1440000(字节)=1.37M(字节)3是记录每个像素RGB值所用的字节数,这里说的是24位图,RGB值就用来描述一个像素,,位图是由像素组成的,,因此用一张位图大小乘它的像素数就可以直接描述一张位图惊人的大!因此,调色板横空出世了,它的
3、功能在于缓解位图文件存储空间(显存或系统内存)过大的问题。在winos中存在三种调色板,,硬件调色板,逻辑调色板,系统调色板,,winos用"调色板管理器"机制来管理调色板,,调色板存在于一个位图文件中,一个窗体的DC中,,或OS中,,硬件调色板就是显卡适配器所能实际表达的颜色深度,,逻辑调色板就是winos通过调色板管理机制为每个窗体应用程序DC分配的调色板(系统调色板只有一个,而逻辑调色板可以有多个,,它的本质就是一块内存中的区域用于描述当前应用使用到的调色板,我们都知道调色板是一个结构),,所以逻辑调色板的用途在于模拟硬件调色板,,以使win
4、dows作为一个os可以为界面显示,图像显示等应用提供它们各自专用的活动的调色板,,当逻辑调色板色深小于或大小硬件调色板时,,winos通过调色板管理机制自动让二者谐和,,系统调色板就是winos当前正在使用到的调色板,逻辑调色板可以通过调色板管理机制转变为当前系统调色板,,,但是不管winos的调色板管理机制如何,,最终的调色板都要靠硬件调色板来实现假设一个位图为16色,16色就是上面谈到的可以表示多少种颜色,计算一下,2的4次方=16,因此它是4位图,我们只需要在图像数据中用4个bit就可以存储这个位图的每个像素在16种颜色中所处的等级,接下来
5、会谈到调色板索引所占的空间字节数,,因为它只是一个索引,所占的空间会比图像数据RGB结构小很多,,,再设其像素总数为800×600(位图大小)。然后调色板提供了这16种等级对应的(R,G,B)值,这样,存这个16色位图只需要:800×600×4/8(0.5个字节)=240000(字节)=0.22M(字节) 注意:16色图查询它在调色板中的RGB组合所用的索引需要占用4个BIT,,这是为什么?下面解释一下:4位2进制数可以表示16种情况,8位BIT可以表示现实中我们使用的十进制的0~255种情况,,额外的存储R,G,B表的开销(即调色板Palett
6、e,也称为颜色查找表LUT)仅仅为16×3=48字节。存储空间被大为减少!常见的位图有单色(实际是1位图,,2的一次方为2,,因此它是2色图,,黑白色)、16色(实际是4位图,,2的4次方16,,因此它能表示16种颜色)、256色(实际是8位图,,这种位图的每个像素都用8位刚好一个字节来表示,2的8次方为256,因此它能表示256种颜色也即256种RGB的组合也即这种位图的色深)、16位(2的16次方=65536)及24位(2的24次方=1677万种颜色和256级灰度值色深差不了很多,所以效果其实与16位图不相差几多)真彩色5种,对于前三者(即不大
7、于256色)都可以调色板方式进行存储,而对16位及24位真彩色以调色板进行存储是不划算的,它们直接按照R,G,B分量进行存储。在此基础上我们来分析DDB位图(Device-dependentbitmap,与设备相关的位图)与DIB位图(Device-independentbitmap,与设备无关的位图)的概念以及二者的区别。DDB依赖于具体设备,它只能存在于内存中(视频内存或系统内存),其颜色模式必须与特定的输出设备相一致,使用系统调色板。一般只能载入色彩较简单的DDB位图,对于颜色较丰富的位图,需使用DIB才能长期保存。DIB不依赖于具体设备,可
8、以用来永久性地保存图象。DIB一般是以*.BMP文件的形式保存在磁盘中的,有时也会保存在*.DIB文件中。DIB位图的特点