[英]Pseudo random colours generator in javascript
從這個問題開始: JavaScript中的隨機顏色生成器及其第一個答案:
function get_random_color() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
我在問:有沒有辦法避免一定范圍的顏色?
假設我要避免使用C0C0C0(銀色)和所有類似的陰影。.我試圖了解顏色在這里的工作方式: http : //www.w3schools.com/tags/ref_colorpicker.asp 。 我寫了C0C0C0,我得到了所有相似的顏色,但是顯然列表並不完整,因為從C0C0C0上到下,我們有C6C6C6和ADADAD,但我也要避免C0C0C1,它僅在最后一點與銀色不同。
我希望我自己解釋一下。 你能以某種方式做到嗎?
謝謝干杯
就像有人說的類似模糊詞:)
如果該功能真的很重要,則可以嘗試使用定義“顏色差異”的CIE LAB顏色模型。 L * a * b模型
它具有值:L,a,b
您可以計算ΔE= sqrt((ΔL)^ 2 +(Δa)^ 2 +(Δb)^ 2)
模型說:
0<ΔE<1 - cannot see the difference
1 <ΔE < 2 - the difference can be seen by experienced observer
2 <ΔE < 3,5 - the difference can be seen also by unexperienced observer
3,5 <ΔE < 5 - the difference is distinct
5 < ΔE - both colors are totally different
因此,您可以將RGB轉換為L * a * b(例如: http : //www.easyrgb.com/index.php?X = MATH ),然后查看其是否為“不同”顏色
我從來沒有做過,這只是想法:)
function get_random_color() {
var color = new Array;
do {
for (var i = 0; i < 3; i++ ) {
color[i] = Math.round(Math.random() * 255);
}
} while (close_to_gray(color));
// Reformat the r, g, b binaries to #XXXXXX here, call it 'color_s'
return color_s;
}
function close_to_gray(color) {
var spread = 1;
for ( var i = 0; i < 3; i++ ) {
for ( var j = i+1; j < 3; j++ )
if ( abs(color[i] - color[j]) > spread )
return false;
}
return true;
}
這樣的事情。 您可以通過發揮spread
價值,您的喜好。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.