CSDN博客

img rootcn

RGB色彩说明和转换算法

发表于2004/9/16 10:39:00  6815人阅读

分类: 脚本语言

RGB数值换算
      图片处理时,经常用到 RBG 的数值,它可以用十进制(0-255)或十六进制(00-FF)来表示。一斤等于十六两,就是十六进制。
      十进制的数是利用 0 到 9 十个数码来表示。十六进制是利用 0 到 9 十个数码,再加上 A,B,C,D,E,F 六个拉丁字母来表示。即 A 表示十,F 表示十五。按照这个规定,换算起来就方便了。 
      比如将十进制的 245 换算为十六进制的模式,
            245 / 16 = 15 ... 余数 5
因此十进制的 245, 用十六进制的模式表示,就是 F5 。 
      又比如将十六进制的 EA 换算为十进制的模式,E为14, A为10, 则
            14 x 16 + 10 = 234。
因此十六进制的 EA, 用十进制的模式表示,就是 234 。
      当然用计算器直接换算就更方便了。WINDOWS 就带有这样的计算器。在'开始/程序/附件'里。

-------------------------------------

十六进制数在像素中的实现
   在大多数的程序语言中,甚至HTML,都使用到RGB色彩模式,其利用红、绿、蓝三种颜色组合成某种颜色组成一个像素点。一个RGB色彩,在我们的认识中,是3个字节(byte),每一个字节是RGB色彩中的一个组成部分。注意1 byte = 8 bits,而RGB色彩是24位色彩系统,每一位单独的字节代表十进制数0-255中的某一个值,用十六进制表示就是0-FF。在HTML中,你可以看到象这样的标签,< font color="#FF0000" >,那么这个值在RGB色彩中就代表了红色。注意它用六位数字来表示,RGB色彩不可以用超过六位数字的长度来表示,因为它只有三个字节。在RGB色彩中,“#FF12AC”,第一第二个数字“FF”,该像素表示为为纯红色,这是最高数了,因为在字节中没有再超过FF的数值了;接下来的两个数字“12”,表现为某种很亮的绿色,这个数值相当的低,最后两位数字“AC”,在该像素中表现为很强亮度的蓝色,这个数值比较高。最后,这个像素的组合色彩显示为粉红色。
   请注意绝大多数的编程语言,包括JavaScript,十六进制必须用“0x”来表示,这可以使计算机不至于把十进制和十六进制混淆起来。因此早先在JavaScript中使用RGB色彩时,上面的数值应写成0xFF12AC,举个例子,我们可以在JavaScript中定义背景颜色为那种粉红色:
document.bgColor = 0xFF12AC;
   使用RGB色彩的红、绿、蓝各自的256种深浅变化来组合调变颜色,我们可以实现16万种色彩!
   色彩渐变
   现在我们明白了色彩和像素是如何来工作的,我们就要说上正题,倒底字符的渐变怎么来实现呢?
   渐变是指两种不同的颜色,分别作为起始色和终结色,找出它们需要多少步色彩增量变化才可从起始颜色变成最终颜色。它可用以下公式来表示:
(secondcolor - firstcolor) / number_of_steps;
   “secondcolor”即指最终指定颜色,“firstcolor”就是起始的颜色。变量“number_of_steps”指所要渐变字符的长度,我们用这个变量来确定像素中的每个字符有多少增量变化,如果我们能知道字符间增量的话,下面这行语句就是我们所需要的:
(secondcolor - firstcolor) / string.length;
   开始渐变
   虽然上面的概念很简单,但我们需要把它用到实际中去。我们需要在由红、绿、蓝所组成的各种颜色中实现渐变,如果我们仅仅只是减去红和蓝并使用某些数值来划分它们,那么色彩渐变是不会正确的依照色谱的物理原理来工作的。我们需要某种漂亮的过渡结果。那么,我们必须从RGB颜色中分开红、绿、蓝三种原色,并单独的对某一种主色调进行计算。
   你可能会疑惑你倒底怎么去做这件事!这中间包含了一种更先进的方法-位屏蔽。位屏蔽将艺术化的取走我们不再需要的某些色块。

---------------------------------------------------

以上皆为引文,输入相应的值直接进行计算:

十六进制(Hex):
十进制(Dec):
百分比(Per):
0 0

相关博文

我的热门文章

img
取 消
img