调色板的原理和调色板显示模式
调色板只有图片的颜色小于等于256色的时候才有,16位高彩和24位32位真彩是没有调色板的.
调色板的存在的意义只是在当初486以前为了节省空间的一种采用索引的压缩算法,现在没有人这种东西。
调色板是为了节约空简所用的,相当于一个索引。只有16位以下的才用调色板,真彩色不用调色板。
但是在写16bpp真彩的LCD驱动程序里,为了兼容以前的驱动程序,还需要提供一个假的调色板。( 开机的logo就用的是假的调色板 )
假的调色板指向一个数组:static u32 pseudo_palette[16];
而这个数组是由
static struct fb_ops s3c_lcdfb_ops = {
.owner = THIS_MODULE,
.fb_setcolreg= s3c_lcdfb_setcolreg,
.fb_fillrect = cfb_fillrect,
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
};
中的 .fb_setcolreg= s3c_lcdfb_setcolreg, 这个函数来设置的!
所谓调色板,就是在低颜色深度的模式下,在有限的像素值与RGB颜色之间建立对应关系的一个线性表。比如说,从所有的16位彩色中抽取一定数量的颜色,编制索引。当需要使用某种彩色时,不需要对这种颜色的RGB分量进行描述,只需要引用它的索引号,就可以使用户选取自己需要的颜色。索引号的编码长度远远小于RGB分量的编码长度,因此在彩色显示的同时,也大大减轻了系统的负担。
让我们来看看下面的例子。
有一个长宽各为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,省很多吧?
这张R、G、B的表,就是我们常说的调色板(Palette),另一种叫法是颜色查找表LUT(Look Up Table),似乎更确切一些。Windows位图中便用到了调色板技术。其实不光是Windows位图,许多图象文件格式如pcx、tif、gif等都用到了。所以很好地掌握调色板的概念是十分有用的。
有一种图,它的颜色数高达256×256×256种,也就是说包含我们上述提到的R、G、B颜色表示方法中所有的颜色,这种图叫做真彩色图(true color)。真彩色图并不是说一幅图包含了所有的颜色,而是说它具有显示所有颜色的能力,即最多可以包含所有的颜色。表示真彩色图时,每个象素直接用R、G、B三个分量字节表示,而不采用调色板技术。原因很明显:如果用调色板,表示一个象素也要用24位,这是因为每种颜色的索引要用24位(因为总共有2^24种颜色,即调色板有2^24行),和直接用R,G,B三个分量表示用的字节数一样,不但没有任何便宜,还要加上一个256×256×256×3个字节的大调色板。所以真彩色图直接用R、G、B三个分量表示,它又叫做24位色图。
调色板一般是为了显示256色图象时使用的。图象(BMP图象)按颜色种类分类可以分为:
1、黑白图象。使用2个颜色的调色板;
2、256色图象(包括256级灰度图象),使用调色板。调色板中记录的是图象中使用的256种颜色,图象数据中记录的是颜色索引,通过这个索引值就可以找到对应的颜色。
3、16bit、24bit真彩色图象,不使用调色板。图象数据中保留RGB三种颜色组合,可以直接显示。
调色板的原理和调色板显示模式相关推荐
- R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(分组调色板填充、自定义调色板、灰度比例)实战(dot plot)
R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(分组调色板填充.自定义调色板.灰度比例)实战(dot plot) 目录 R语言使用ggplot2包使用geom_dotplot函 ...
- 16位调色板和32位调色板_使调色板可访问
16位调色板和32位调色板 Accessibility has always been a tough sell. Admittedly, less so than in the 'nineties, ...
- 16位调色板和32位调色板_设计系统的调色板第一部分
16位调色板和32位调色板 重点(Top highlight) 第1部分(Part 1) I've been creating custom design systems for over five ...
- 16位调色板和32位调色板_12种调色板提取器和站点色彩灵感资源
16位调色板和32位调色板 Sometimes the hue muse fails to strike; sometimes all you're provided for the look and ...
- 16位调色板和32位调色板_整理色板和调色板的10个技巧
知道自己有东西,但不知道它在哪里会令人沮丧. 对于您为设计项目创建或保存的颜色,尤其如此. 不得不遍历色样 , 浪费时间 ,只好在需要切换色相时重新开始搜索. 如果您经常使用吸管工具或将CMYK值插入 ...
- 使用调色板绘制系统界面
相关代码可视频可在网易云课堂下载: Linux kernel Hacker, 从零构建自己的内核 上一节,我们已经可以使用C语言实现图像绘制,但操作系统的用户界面不可能是那种扎眼的条纹图案,这一节,我 ...
- vc++调色板!!!
11.1.1 调色板的原理 PC机上显示的图象是由一个个像素组成的,每个像素都有自己的颜色属性.在PC的显示系统中,像素的颜色是基于RGB模型的,每一个像素的颜色由红(B).绿(G).蓝(B)三原色组 ...
- 09.调色板绘制系统界面
简介 上一节我们使用C语言绘制了简单的图形界面,实现了汇编语言和C语言共同开发操作系统,只有当C语言力不能逮,特别是需要操作硬件时,才会使用汇编语言. 我们实现图像绘制的办法是,给每一个像素设定指定的 ...
- 【PIL】图像分割竞赛中8位深调色板模式的mask读取与保存(PASCAL VOC)
[PIL]图像分割竞赛中8位深调色板模式的mask读取与保存(PASCAL VOC) 目录: [PIL]图像分割竞赛中8位深调色板模式的mask读取与保存(PASCAL VOC) 1.调色板图像原理 ...
- h5 canvas仿 Photoshop 绘制调色板
本文采取的是最原始方式进行绘制,实现类似渐变的效果等都是最原始的.我进行了大量的循环绘制,而 js 的效率本来就不高.建议采用系统的渐变 api 进行绘制,靠底层的能力,效率应该会高出不少.但渐变的绘 ...
最新文章
- 工作中InnoDB引擎数据库主从复制同步心得
- C++官方自带可持久化平衡树rope的3000行源码
- MySQL的查询性能优化——《深究MySQL》
- 数据库 数据库SQL语句一
- pandas镜像安装_Python安装库太慢?配置好这个速度飞起
- mysql hibernate 分页查询_Hibernate + MySQL 分页类的实现
- Linux系统上利用nmcli命令创建网络组
- RT-Thread : IEEE1588/PTP 协议的实现
- 遥感原理与应用 【I】
- 语音识别智能开关 第一期
- 操作系统产品密钥查看方法
- 百度云盘超4G大文件上传不了怎么办?
- 智源首席科学家孙茂松当选欧洲科学院外籍院士
- Android传感器之光线传感器介绍
- 谷歌Chrome浏览器
- mavennexus环境搭建
- 2012年国内薪资最高的IT公司排行
- 论文投稿指南——中文核心期刊推荐(计算机技术)
- cee怎么把大图片放进小盒子_PS的实际应用:怎么给盒子制作包装图片
- 如何查看eclipse的版本(Photon/Oxygen/Neon等)