【问题标题】:How to generate a random DARK hex color code with PHP?如何使用 PHP 生成随机的 DARK 十六进制颜色代码?
【发布时间】:2017-10-28 09:54:30
【问题描述】:

请注意,我已经阅读了Generating 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();

?>

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

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

【问题讨论】:

  • 取决于你的“光”阈值在哪里,但是你的随机数越接近 255,颜色就会越亮。降低上限会让你的颜色变深。
  • @rickdenhaan 这意味着如果数字接近 255 它是轻的?我对么?因此,如果我将 mt_rand( 0, 255 ) 修改为 mt_rand( 0, 150) 之类的东西,它总是返回深色?
  • 减少255 常数。越低 - 越暗。

标签: php random colors


【解决方案1】:

希望这对你有帮助,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;
}

你只调用 random_color_part()。

【讨论】:

    【解决方案2】:

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

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

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

    您可以使用此 sn-p 检查当您降低最大颜色值 (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>

    【讨论】:

    • 问题是关于PHP,但答案在JavaScript
    • @JohnChristianDeChavez answer IS in PHP,附加代码 sn-p 在 js 中,因为您无法在 stackoverflow 站点上运行 php 代码...
    猜你喜欢
    • 2011-08-02
    • 2021-04-24
    • 2011-07-02
    • 2015-10-07
    • 2016-02-04
    • 2011-12-29
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多