2017-05-27 158 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

相关问题