计算机里通常使用RGB色彩模式,例如RGB565,就是用两个字节表示一个像素的颜色,其中红绿蓝分别用5、6、5个bit。还有一些RGB555、RGB666、ARGB4444之类的。而所谓的真彩色,使用4个字节表示一个像素,通常是RGB888,或者ARGB8888,其中A的全称是Alpha通道,指的是透明度
WindML5的显卡驱动基本都已经支持RGB888的真彩色
用WindML语句把光的三原色、颜色的三原色,以及黑白色都画出来,效果如下
再多画几个
RGB888一共可以表示256*256*256=16777216种颜色,这基本得用两个4K的屏才能显示完整,而且也超过了人眼能区分的颜色数量。不过,只把RGB两两混合的画出来,还是比较容易的
而Windows的"画图"中,除了RGB,还有一种ESL模式
这个ESL与HSL/HSB含义差不多,而与RGB之间也仅是一个简单的转换关系。写个函数很容易实现它们之间的转换
代码语言:javascript复制Red 红色值
Green 绿色值
Blue 蓝色值
HSL/ESL
H/E: Hue 色相 0 - 239
S: Saturation 饱和度 0 - 240
L: Lightness 明度 0 - 240
HSB/HSV
H: Hue 色相
S: Saturation 饱和度
B: Brightness 亮度
V: Value 值(代表深浅)
Contrast 对比度
Brightness 亮度
Lightness 明度
Luminance 发光度
Brightness 主观上感知光的强弱
Lightness 目标与周边物体的明亮对比,即主观上明度的强弱
Luminance 客观测量发光体的亮度
既然有了RGB到ESL的转换,那很容易就可以实现调整饱和度和亮度的函数了
例如下面的右图是将左图的ESL中的饱和度调整为最大,颜色显得更鲜艳
饱和度调到最小,就是灰度图了
而如果改为调整左图中ESL的亮度呢?提高亮度就是所有颜色都明亮一些。最大值,就是纯白色了
降低亮度,就是所有颜色暗一些。最暗,就是纯黑色了
另外还有一个对比度。这个概念,貌似还没有什么标准。基本规则是: 提高对比度,就是让亮的更亮,暗的更暗
降低对比度,就是所有颜色的RGB值向中间靠拢
有点意思
我是泰山,专注VX 17年! 一起学习,共同进步!