6

1000 から 9999 までの数字があります。数字ごとに RGB で一意の色を取得する関数が必要です。メソッドが起動されるたびに、各番号の色を同じにする必要があります。また、数字を追加するときは、色を大きく変える必要があります。したがって、1 番は濃い赤、2 番は薄緑などになります。

うまくいけば、誰かがこれを行う方法を知っています! :)

これは私がこれまでに得たものですが、色はほとんど同じです。それは私が望んでいるものではありません!

for ($i = 1000; $i < 2099; $i++) {
  $rgb = getRGB(dechex($i));
  echo '<div style="width: 800px; height: 30px; margin-bottom: 10px; background-color: ' . rgb2html($rgb['red'], $rgb['green'], $rgb['blue']) . ';"></div>';
}

function getRGB($psHexColorString) {
  $aColors = array();
  if ($psHexColorString{0} == '#') {
    $psHexColorString = substr($psHexColorString, 1);
  }
  $aColors['red'] = @hexdec($psHexColorString{0} . $psHexColorString{1});
  $aColors['green'] = @hexdec($psHexColorString{2} . $psHexColorString{3});
  $aColors['blue'] = @hexdec($psHexColorString{4} . $psHexColorString{5});
  return $aColors;
}

function rgb2html($r, $g = -1, $b = -1) {
  if (is_array($r) && sizeof($r) == 3)
    list($r, $g, $b) = $r;

  $r = intval($r);
  $g = intval($g);
  $b = intval($b);

  $r = dechex($r < 0 ? 0 : ($r > 255 ? 255 : $r));
  $g = dechex($g < 0 ? 0 : ($g > 255 ? 255 : $g));
  $b = dechex($b < 0 ? 0 : ($b > 255 ? 255 : $b));

  $color = (strlen($r) < 2 ? '0' : '') . $r;
  $color .= (strlen($g) < 2 ? '0' : '') . $g;
  $color .= (strlen($b) < 2 ? '0' : '') . $b;
  return '#' . $color;
}
4

2 に答える 2

8

PHP 関数 "dechex" を使用して、整数を Hexa RGB に変換できます。

http://php.net/manual/en/function.dechex.php

このページには、次の機能があります。

function toColor($n) {
    return("#".substr("000000".dechex($n),-6));
}

テストされていませんが、役立つ場合があります。

コメントの後に編集: 関数に疑似ランダマイザーを追加できます。

function toColor($n) {
    $n = crc32($n);
    $n &= 0xffffffff;
    return("#".substr("000000".dechex($n),-6));
}
于 2012-06-12T08:39:24.277 に答える