给你点颜色你不来瞧一瞧吗
来看看五彩缤纷的图像是怎么在计算机内部通过二进制数进行表达和存储的。
手写数字“8”
手写数字“8”的放大图
一张图像在计算机里实际上是由一大堆的小方块构成的。这些小方块叫——像素。像素是整个图像中不可分割的单位,不可分割意味着它不能够再切割成更小的单位。
分辨率就是7×13像素,即91像素。
白色位置对应的二进制位是0,黑色位置对应的二进制位是1。
图像的二进制表达
放大的猫眼
放大后,我们可以看到,彩色图像跟黑白图像一样,也是由一个一个的像素构成的。
各种颜色可以用3种基本颜色(三原色)的组合来形成。这3种基本颜色是红、绿、蓝。例如,红色和绿色叠加可以形成黄色,红色和蓝色叠加可以形成紫色,蓝色和绿色叠加可以形成青色,红色、绿色、蓝色3种颜色叠加则可以形成白色。
我们用3位的二进制数,每位从左往右分别代表红色(red,R)、绿色(green,G)、蓝色(blue,B),1代表有对应的颜色,0代表没有对应的颜色,这样就构成了计算机上常用的红绿蓝(RGB)颜色表达值。
每种颜色就可以对应有0~255一共256级的亮度。例如,对于红色,亮度值从0~255。
红色、绿色、蓝色这3种颜色分别采用8位的空间来表示,这样每种颜色能表示的亮度级别就有28(256)种。以红色为例,红色的取值范围为0~255,数字越大,则颜色看起来越红。三原色分别加上亮度值后,再组合到一起,使用3×8位,就能表达256×256×256,即16777216种颜色,基本上就能涵盖人肉眼所能分辨的颜色了。
颜色的红绿蓝(RGB)二进制值
还有一种十六进制的数学表达方法。与二进制、十进制类似,十六进制数的每位上有16种选择,分别是0~9,再加上字母A~F。将二进制数写成十六进制数后,表达就简洁很多。二进制数到十六进制数的转换方法是,将从右至左每4位切成一段,然后将这4位(十进制数就是0~15)构成的值对应到十六进制数每位的0~F之间即可。表1-6是将上面的红绿蓝(RGB)二进制数值转换为十六进制数值的示例(为了避免跟十进制混淆,我们通常在十六进制数前加上符号“#”)。
颜色的红绿蓝(RGB)十六进制值

