Javascript中的所有RGB颜色组合
我想要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++) {
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;
}