2017-05-27 159 views
2

請注意,我已經閱讀Generating a random hex color code with PHP,我也得到了這個問題的幫助。但我的問題與這個問題不同。如何用PHP生成一個隨機的DARK十六進制顏色代碼?

我打算用下面的圖像創建1000多個圖像。

enter image description here

文本顏色始終爲白色。我需要隨機生成背景顏色。我使用以下代碼來生成隨機顏色。

<?php 

function random_color_part() { 
    return str_pad(dechex(mt_rand(0, 255)), 2, '0', STR_PAD_LEFT); 
} 

function random_color() { 
    return random_color_part() . random_color_part() . random_color_part(); 
} 

echo random_color(); 

?> 

此腳本生成淺色,如白色,淡黃色,淡藍色。我需要刪除它們。因爲如果背景顏色也是淺色,很難閱讀文本。

那麼有沒有辦法修改此代碼只生成深色?

+0

方式取決於你對「光」門檻,但越接近你的隨機數到達255時,明亮的那種顏色將是。降低這個上限會讓你變暗。 – rickdenhaan

+0

@rickdenhaan這意味着如果數字接近255,它是輕?我對麼?所以如果我修改'mt_rand(0,255)'到'mt_rand(0,150)'這樣的東西,它總是會返回深色? – Ranuka

+0

減少'255'常量。越低 - 越深。 –

回答

1

淺色使用較高的值。降低最大論據rand()應該創建較深的顏色,就像這樣:

function random_color_part() { 
    return str_pad(dechex(mt_rand(0, 127)), 2, '0', STR_PAD_LEFT); 
} 

但你將有一個確切的閾值,從而取得正確的顏色。

您可以使用此代碼段來檢查降低最大顏色值(max)時顏色發生的情況。

function hex(i) { 
 
    var hex = i.toString(16); 
 
    if (hex.length == 1) { 
 
    hex = '0' + hex; 
 
    } 
 
    return hex; 
 
} 
 

 
var max = 150; 
 

 
for (var i = 0; i < max; i += 10) { 
 
    var td = ''; 
 
    for (var j = 0; j < max; j += 10) { 
 
    for (var k = 0; k < max; k += 10) { 
 
     var color = '#' + hex(i) + hex(j) + hex(k); 
 
     td += '<td style="background-color:' + color + ';">&nbsp;</td>'; 
 
    } 
 
    } 
 
    $('table').append('<tr>' + td + '</tr>'); 
 
}
table { 
 
    border-collapse: collapse; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
</table>

+0

這個問題是關於'PHP'的問題,但答案是'JavaScript' –

+0

@JohnChristianDeChavez在'PHP'中回答** IS **,附加代碼片段在js中,因爲您無法在stackoverflow站點上運行php代碼。 。 – mx0

相關問題