如何使用 PHP 生成随机的 DARK 十六进制颜色代码?

Ran*_*uka 5 php random colors

请注意,我已经阅读了Genericing a random hex color code with PHP并且我也从这个问题中得到了帮助。但我的问题与那个问题不同。

我将创建 1000 多张带有一些文本的图像,如下图所示。

在此输入图像描述

文本颜色始终为白色。我需要随机生成背景颜色。我使用以下代码来生成随机颜色。

<?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();

?>
Run Code Online (Sandbox Code Playgroud)

该脚本也会生成白色、浅黄色、浅蓝色等浅色。我需要删除它们。因为如果背景颜色也是浅色,则很难阅读文本。

那么有没有办法修改此代码只生成深色?

小智 6

也许这对你有帮助,PHP 中的随机深色十六进制颜色

function random_color_part() {
    $dt = '';
    for($o=1;$o<=3;$o++)
    {
        $dt .= str_pad( dechex( mt_rand( 0, 127 ) ), 2, '0', STR_PAD_LEFT);
    }
    return $dt;
}
Run Code Online (Sandbox Code Playgroud)

您只需调用 random_color_part()。


mx0*_*mx0 5

浅色使用高值。降低 max 参数rand()应该会创建更深的颜色,如下所示:

function random_color_part() {
    return str_pad( dechex( mt_rand( 0, 127 ) ), 2, '0', STR_PAD_LEFT);
}
Run Code Online (Sandbox Code Playgroud)

但您必须尝试精确的阈值才能获得正确的颜色。

您可以使用此代码片段来检查当您降低最大颜色值 ( max) 时颜色会发生什么情况。

function random_color_part() {
    return str_pad( dechex( mt_rand( 0, 127 ) ), 2, '0', STR_PAD_LEFT);
}
Run Code Online (Sandbox Code Playgroud)
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>');
}
Run Code Online (Sandbox Code Playgroud)
table {
  border-collapse: collapse;
}
Run Code Online (Sandbox Code Playgroud)