Как я должен предотвратить цвета, которые не видны? - PullRequest
0 голосов
/ 28 октября 2011

У меня есть этот код:

function rand_colorCode(){
  $r = dechex(mt_rand(0,255));
  $g = dechex(mt_rand(0,255));
  $b = dechex(mt_rand(0,255));
  $rgb = $r.$g.$b;
  if($r == $g && $g == $b){
    $rgb = substr($rgb,0,3);
  }
  return '#'.$rgb;
}

$code = rand_colorCode();

Это генерирует случайный цвет, который позже вставляется в базу данных mysql. Но иногда он генерирует слишком светлый цвет. (это проблема, потому что эти цвета отображаются позже, а мой фоновый цвет белый)

Мой простой вопрос: как я могу предотвратить слишком яркие или слишком темные цвета? Как мне настроить свой код?

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Вы можете рассчитать яркость текущего набора цветов и проверить его в соответствии с некоторыми предопределенными пределами:

while ( true )
{
  $r = dechex(mt_rand(0,255));
  $g = dechex(mt_rand(0,255));
  $b = dechex(mt_rand(0,255));
  $brightness = ( 0.2126 * $r ) + ( 0.7152 * $g ) + ( 0.0722 * $b )
  if ( $brightness > $lower_limit || $brightness < $upper_limit )
     break;
}

Формула взята отсюда Формула для определения яркости цвета RGB

2 голосов
/ 28 октября 2011

Используйте более короткую цветовую гамму:

mt_rand(80,200)

Нижняя граница предотвращает почти черные цвета, а верхняя граница предотвращает почти белые цвета. Вы можете настроить этот диапазон в соответствии со своими потребностями.

0 голосов
/ 28 октября 2011

Ну, например, код RGB белого (например, 255, 255, 255.) Вы можете просто определить правило, что , если , все три значения (R, G & B) выше определенного порогацвет будет слишком светлым и, следовательно, не будет отображаться правильно.Попробуйте сами определить порог, взглянув на цветовую палитру.Возможно, 200, 200, 200 будут максимальным значением, а 50, 50, 50 - минимальным.

Затем вы можете просто рандомизировать цвет от 50 до 200 (если вы определите это как свой порог),Так что вместо

 $r = dechex(mt_rand(0,255)); 

Вы делаете

 $r = dechex(mt_rand(50,200)); 

Это может быть простой способ исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...