Подтвердить что ты не робот

Создание случайного шестнадцатеричного цветового кода с помощью PHP

Я работаю над проектом, где мне нужно сгенерировать число undefined случайных шестнадцатеричных цветовых кодов... как бы я хотел построить такую ​​функцию в PHP?

4b9b3361

Ответ 1

Получите случайное число от 0 до 255, затем преобразуйте его в hex:

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

Ответ 2

Строка RGB hex - это просто число от 0x0 до 0xFFFFFF, поэтому просто создайте число в этом диапазоне и преобразуйте его в шестнадцатеричное:

function rand_color() {
    return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
}

или

function rand_color() {
    return sprintf('#%06X', mt_rand(0, 0xFFFFFF));
}

Ответ 3

вы можете использовать md5 для этой цели, очень короткий

$color = substr(md5(rand()), 0, 6);

Ответ 4

$rand = str_pad(dechex(rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
echo('#' . $rand);

Вы можете изменить rand() на mt_rand() если хотите, и можете поместить strtoupper() вокруг str_pad() чтобы случайное число выглядело лучше (хотя это и не обязательно).

Он работает отлично и намного проще, чем все другие методы, описанные здесь :)

Ответ 5

Допустимые шестнадцатеричные цвета могут содержать от 0 до 9 и от A до F, поэтому, если мы создадим строку с этими символами, а затем перемешаем ее, мы можем получить первые 6 символов, чтобы создать случайный шестнадцатеричный код цвета. Пример ниже!

код

echo '#' . substr(str_shuffle('ABCDEF0123456789'), 0, 6);

Я проверил это в цикле while и сгенерировал 10000 уникальных цветов.

код, который я использовал для генерации 10000 уникальных цветов:

$colors = array();
while (true) {
   $color          = substr(str_shuffle('ABCDEF0123456789'), 0, 6);
   $colors[$color] = '#' . $color;
   if ( count($colors) == 10000 ) {
      echo implode(PHP_EOL, $colors);
      break;
   }
}

Который дал мне эти случайные цвета в результате.


outis указал, что мой первый пример не может генерировать шестнадцатеричные числа, такие как '4488CC', поэтому я создал функцию, которая могла бы генерировать шестнадцатеричные числа, подобные этой.

код

function randomHex() {
   $chars = 'ABCDEF0123456789';
   $color = '#';
   for ( $i = 0; $i < 6; $i++ ) {
      $color .= $chars[rand(0, strlen($chars) - 1)];
   }
   return $color;
}

echo randomHex();

Второй пример было бы лучше использовать, потому что он может вернуть намного больше результатов, чем первый, но если вы не собираетесь генерировать много цветовых кодов, то первый пример будет работать просто отлично.

Ответ 6

$color = sprintf("#%06x",rand(0,16777215));

Ответ 7

Самый короткий путь:

echo substr(uniqid(),-6); // result: 5ebf06

Ответ 8

Начиная с PHP 5.3, вы можете использовать openssl_random_pseudo_bytes():

$hex_string = bin2hex(openssl_random_pseudo_bytes(3));

Ответ 9

Вот как я это делаю.

<?php echo 'rgba('.rand(0,255).', '.rand(0,255).', '.rand(0,255).', 0.73)'; ?>

Ответ 10

Я думаю, что это было бы хорошо, и он получил любой доступный цвет

$color= substr(str_shuffle('AABBCCDDEEFF00112233445566778899AABBCCDDEEFF00112233445566778899AABBCCDDEEFF00112233445566778899'), 0, 6);

Ответ 11

Веб-безопасные цвета больше не нужны (равно как и действительная концепция, даже), поскольку в настоящее время даже мобильные устройства имеют 16-битный цвет.

Подробнее см. Wikipedia.

Другими словами, используйте любой цвет от # 000000 до #FFFFFF.

edit: Дорогой downvoters. Сначала проверьте историю изменений для вопроса.

Ответ 12

Если кто-то хочет генерировать светлые цвета

sprintf('#%06X', mt_rand(0xFF9999, 0xFFFF00));

Ответ 13

function random_color(){  
 return sprintf('#%06X', mt_rand(0, 0xFFFFFF));
}