Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的所有RGB颜色组合_Javascript_Rgb - Fatal编程技术网

Javascript中的所有RGB颜色组合

Javascript中的所有RGB颜色组合,javascript,rgb,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做了这个: 我现在有了所有可能的RGB颜色组合吗?如果您想迭代所有16777216种可能的24位RGB颜色,只需一个循环即可实现: for( i=0; i < 1<<24; i++) {

我想要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做了这个:


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

如果您想迭代所有16777216种可能的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+")";
}
(i=0;i<116)&0xff; g=(i>>8)&0xff; b=i&0xff; color=“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+")";
}
(i=0;i<18)&0xf)*0x11; g=((i>>4)&0xf)*0x11; b=(i&0xf)*0x11; color=“rgb”(“+r+”、“+g+”、“+b+”); }
这将基本上将您的颜色范围减少到每个通道4位,从而为您提供#000000、#000011、#000022等等。100毫秒间隔的Rutime将为41秒,跨越4096种颜色。

否,您的代码仅显示1786种颜色。总共有
(256^3)=16777216
个可能的组合

代码中的问题是,值要么同时升序/降序,要么稳定在0或255。因此,例如,您永远不会看到R、G和B的三个值与0/255的“距离”不同


不过视觉效果很酷

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

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

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

最后,这可能不需要,但它帮助我显示RGB值。。。(这段代码不是我的,来自谷歌搜索,但它工作得非常完美,出于我的需要,我为没有捕获引用向所有者道歉,但我永远的感谢就足够了。:)

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

全部16777216个?您的代码允许1786个“刻度”。这离你的目标太远了。我知道,如何获得所有的16777216?如果可能的话。哈哈,好吧。我不太懂你的代码,但有更现实的方法吗?还是我应该处理1786种颜色?@Niet,如果你能稍微解释一下逐位操作,这可能会有所帮助。值
I
有一个整数,它组合了rgb颜色值的三个位块。移位运算符将该数字的位移到低阶部分,然后当按位与0xFF进行ANDing时,它将使值介于0和255之间。
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;
}