RGB和RGBA
在css样式中看到的#RRGGBB这代码就是表示RGB颜色的十六进制,分别表示红绿蓝三色通道的色阶,色阶表示通道的强弱。每个通道有256阶,取值0-256,三个通道组合起来理论上可以表示2^24种不同颜色,可以用一个三维立方体把颜色表示出来。
如上图所示RGB并不能表示人眼所能看到的所有颜色,它只是占其中一部分,也就是中间的三角形区域。
RGBA区别于RGB的是多了一个A通道,这个通道表示透明度,取值0-1.特别注意,css颜色表现与webgl表现不同,webgl中rgba的数值都是0-1之间的浮点数。
使用这个方法描绘颜色时,具有一定的局限性。比如当我们想随机动态让不同数据的图形颜色对比鲜明时,使用RGBA并不能实现这个效果。
HSL和HSV颜色
HSL和HSV是用色相(Hue)、饱和度(Saturation)和亮度(Lightness)或明度(Value)来表示颜色。其中Hue是角度,取值为0-360,其他取值都是0-100%。这两者表示方法有一些区别,但效果比较接近。
它们与RGB的转换其实就是讲RGB颜色的立方体从直角坐标系投影到极坐标的圆柱上,所以在色值上是一一对应的。在css和canvas2D都可以直接支持HSL颜色,只有wengl需要做转换。
使用HSL随机生成颜色,将H值拉开就能保证颜色差异比较大,然后对饱和度和亮度同时进行依次增加,就能看到亮度的变化。
但HSL还是存在局限性,由于人眼对不同频率光的敏感度不同,在看蓝色和紫色时没有绿色和黄色亮度高。所以产生了新的一种方式。
HSV和RGB互相转换的公式:
www.cnblogs.com/klchang/p/6…
blog.csdn.net/u010134293/…
HSV与HSL的区别
在HSL中,亮度跨越从黑色过选择的色相到白色的完整范围(在HSV中,V分量只走一半行程,从黑到选择的色相)。
www.sohu.com/a/245724770…
CIE Lab和CIE Lch颜色
它是一种符合人类感觉的色彩空间,用L表示亮度,a和b表示颜色对立度。它的对应方式类似于RGB和HSL和HSV的对应方式,也是将坐标从立方体的直角坐标系变换为圆柱体的极坐标系。
Cubehelix色盘
它的原理是在RGB立方中构建一段螺旋线,让色相随着亮度增加螺旋变换。