GUI原理1- 色彩王国
GUI原理1 - 色彩王国
设计领域有一个行规,那就是设计师必须使用CRT显示器,这有两点原因。一,CRT显示器所能够表达的颜色更多,达到32Bit,而LCD原理上只能实现18Bit,现在经过优化后可以实现伪24Bit。二,CRT的颜色更接近于CMYK色,而LCD的颜色太亮了,也就是饱和度太高。
BMP文件是Windows最基本的文件格式,比如一张未压缩的真彩色图片,文件的大小通常等于56+宽度*高度*3。前54个字节是文件描述,通常称为文件头,中间的是颜色,每个点占用3个字节,遵循从左到右,从上到下的方向。不过,有的BMP格式在存放颜色时,恰好是相反的,先放最后一个点的颜色。BMP文件的结尾以两个0x00,0x00组成。
不压缩的BMP文件显然是很大的。有两种压缩方式,一,使用256色调色板,二,使用RLE连续压缩算法。调色板最多只能有256种颜色,也就是1个字节,这个调色板放在BMP文件头的位置,颜色可以是任意的真彩色。如果超过256色,系统就会选取使用频度最高的颜色,而忽略掉使用比较少的颜色,将其近似为调色板中的某个颜色。因此,在调色板的BMP文件中,除了256个真彩色之外,就是单个字节的颜色索引值了,就好像一个数组。RLE算法是一种简单有效的方式,能够将水平方向连续的颜色进行压缩,这也是Gif的原理,这在Gif文件里讲。
Gif文件也是应运而生的,当时还处在Win31的时代,BMP是主角,但是BMP太占空间了,必须有一种高效的压缩算法来取代BMP。Gif文件必须是索引色,带一个不超过256色的调色板。通常,这个调色板的尺寸是2的最多8次方,比如一张图只用了14种颜色,但调色板只能是16色的。调色板里存放的是真彩色,而索引值和BMP的不同,根据用到的颜色多少来决定。比如我们只用了16种颜色的调色板,那索引色就是4Bit,描述了0~15的索引值,也就是说,一个字节可以放下2个点的颜色。当然,Gif格式并不是如此简单,也包含了RLE算法。通过一系列连续的颜色,将颜色做一个压缩。一个字节的高4Bit存放索引值,低4Bit存放连续的个数,也就是说,连续数最多16个,以0~15来计算,0表示这个点之后的点不使用该颜色索引。即使连续的颜色超过16个,比如160个,那也必须拆分开来,由10组颜色索引+颜色连续个数的字节来组成。
说到这里,就提醒各位设计师,在使用gif图的使用注意以下两点。一,尽量少的使用颜色,不要使用太多的过渡色;二,颜色一定要水平连续存放,比如,我们可以做垂直方向的渐变色,但如果是水平方向的渐变色,那颜色连续性就消失了,压缩比就不高了。
gif还支持0、1模式的透明色,指定某种调色板的颜色为透明色,则该色在图片上不显示,达到齿条剪裁的目的。因为要牺牲掉一个颜色,所以透明gif的最多颜色为255色,有一个作为透明色用了,但不显示。通常我们使用大红色作为透明色,因为这种颜色过艳,不是很常用,当然也可以使用其他的颜色。
Gif文件也是应运而生的,当时还处在Win31的时代,BMP是主角,但是BMP太占空间了,必须有一种高效的压缩算法来取代BMP。Gif文件必须是索引色,带一个不超过256色的调色板。通常,这个调色板的尺寸是2的最多8次方,比如一张图只用了14种颜色,但调色板只能是16色的。调色板里存放的是真彩色,而索引值和BMP的不同,根据用到的颜色多少来决定。比如我们只用了16种颜色的调色板,那索引色就是4Bit,描述了0~15的索引值,也就是说,一个字节可以放下2个点的颜色。当然,Gif格式并不是如此简单,也包含了RLE算法。通过一系列连续的颜色,将颜色做一个压缩。一个字节的高4Bit存放索引值,低4Bit存放连续的个数,也就是说,连续数最多16个,以0~15来计算,0表示这个点之后的点不使用该颜色索引。即使连续的颜色超过16个,比如160个,那也必须拆分开来,由10组颜色索引+颜色连续个数的字节来组成。
gif图的使用注意以下两点。一,不要使用太多过渡色;二,颜色要水平连续存放,如果是水平方向的渐变色,那颜色连续性就消失了,压缩比就不高了。
gif还支持0、1模式的透明色,指定某种调色板的颜色为透明色,则该色在图片上不显示,达到齿条剪裁的目的。因为要牺牲掉一个颜色,所以透明gif的最多颜色为255色,有一个作为透明色用了,但不显示。通常我们使用大红色作为透明色,因为这种颜色过艳,不是很常用,当然也可以使用其他的颜色。
cursor和icon文件,也跟着RGB发展到ARGB。在windows95及之前的时代,icon都是锯齿的,其图片结构和gif的类似,也支持透明gif方式,所以是齿条透明的。而到了windowsxp时代,icon可以像png那样,拥有每个点的透明度了,不过icon并不是一种压缩格式,所以ARGB的icon文件非常大。icon文件可以在单一文件内存放不同尺寸的图标,cursor文件则可以存放相同尺寸的帧。windowsxp有一点落后于mac,那就是没有支持ARGB的动画指针格式的cursor,我们只能通过第三方的软件,才能实现透明有着阴影的动画鼠标。
在全色盲的眼里,世界是灰色的,树木、房屋、草地、连同阳光,都是灰色的。这就好像将一幅图片去色了,只显示256级灰度一样。最简单的去色,就是R+G+B/3,这是简单的平均,不过连同Photoshop都使用这一平均公式,因为他来的快。还有一种,称为视觉灰度intensity,这是使用测光仪测试红绿蓝三种基色的亮度值,单位是流明。测试方法非常简单,全屏显示一种颜色,测光仪就可以得到不同的流民值。就好像我们的经验一样,蓝色是三种基色中最暗的一种颜色,而绿色则是最亮的颜色,红色处于中间,他们的具体比例是Red0.21 Green0.70 Blue0.09。所以,又产生了另一种去色的方式,R*0.21+Green*0.70+Blue*0.09,这是一种加权平均的算法,某些图形处理软件使用这一算法,而这也更接近于我们想要的真实灰色。根据这一原理,我们可以得知由红色和绿色合成的黄色为什么这么亮了,因为他的亮度值是0.91,已经很接近白色了。根据视觉灰度的原理,我们联系Windows通常使用的颜色,就知道为什么WindowsXP的蓝色看起来总是那么舒服。原因很简单,蓝色的亮度最低,不刺眼,同时,在蓝色上显示白字的对比度最高。而如果换成绿色的风格,则白色的文字不容易识别,也就是这个道理。所以,我们通常说的颜色对比,不仅包含了同色系的颜色取值,也包含了不同色系的亮度差别。这对于我们平面设计师而言,有很多好处,合理的使用不同的颜色,造成视觉上的亮度差异,更加符合人机工效学的原理。