Javascript中的所有RGB颜色组合

时间:2014-05-09 15:24:44

标签: javascript rgb

我想在Javascript中使用所有RGB颜色。我制作了这个架构;

R   G   B
0   0   0
255 255 255
0   255 255
255 0   255
255 255 0
0   255 0
0   0   255
255 0   0

我用Javascript制作了这个: click

我现在拥有RGB颜色的所有可能组合吗?

3 个答案:

答案 0 :(得分:5)

如果你想迭代所有的16,777,216种可能的24位RGB颜色,这可以通过一个循环很简单地实现:

for( i=0; i < 1<<24; i++) {
    r = (i>>16) & 0xff;
    g = (i>>8) & 0xff;
    b = i & 0xff;
    colour = "rgb("+r+","+g+","+b+")";
}

在您的代码中,间隔为100,这将需要将近20天才能完成一个周期。

如果您的颜色较少,请尝试以下操作:

for( i=0; i < 1<<12; i++) {
    r = ((i>>8) & 0xf) * 0x11;
    g = ((i>>4) & 0xf) * 0x11;
    b = (i & 0xf) * 0x11;
    colour = "rgb("+r+","+g+","+b+")";
}

这将基本上将您的颜色范围减少到每通道4位,为您提供#000000,#000011,#000022等。 100毫秒间隔的Rutime将是41秒,跨越4,096种颜色。

答案 1 :(得分:0)

不,您的代码仅显示1,786种颜色。总共有(256 ^ 3) == 16777216种组合。

代码中的问题是值一起上升/下降,或者它们保持稳定在0或255.所以你永远不会看到,例如,R,G和B的三个值是不同的距离&#34;从0/255。

但是,视觉很酷!

答案 2 :(得分:0)

我参加聚会有点晚了,但是... 有同样的问题。我的方法如下。所有人都需要显示255 ^ 3(16777215)颜色。正在构建对比度扫描仪以匹配前景色和背景色,并希望它是可视的。属性值存储在十六进制中(例如#C4E921)。使用setInterval并捕获其ID,以便在完成操作或超出对比基线时可以停止。本质上,获取当前的十六进制值并转换为十进制

const decClrVal = parseInt(hexClrVal, 16);

将一个添加到decClrVal并保存到新变量。将新值转换回24位十六进制     rangeElemTxt.value = ('000000' + newVal).slice(-6).toUpperCase();

)。可以使用setInterval函数的input [range]作为毫秒参数来控制速度。我还为显示的颜色使用了一个范围,这样我就可以从预定义的颜色开始,而不必总是从开头开始。

最后,可能不需要,但是它帮助我显示了RGB值...(此代码不是我的,是从Google搜索中获取的,但效果很好,按我的需要,我对此表示歉意。所有者也没有获得参考,但是我永远的感谢就足够了。:))

function hexToRgb(hex) {
  // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
  var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
  hex = hex.replace(shorthandRegex, function(m, r, g, b) {
    return r + r + g + g + b + b;
  });

  var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
  return result ? {
    r: parseInt(result[1], 16),
    g: parseInt(result[2], 16),
    b: parseInt(result[3], 16)
  } : null;
}

希望这会有所帮助。 祝好运! :)