developer tip

PHP로 임의의 16 진수 색상 코드 생성

optionbox 2020. 11. 9. 08:03
반응형

PHP로 임의의 16 진수 색상 코드 생성


정의되지 않은 임의의 16 진수 색상 코드를 생성해야하는 프로젝트를 진행 중입니다. PHP에서 이러한 함수를 어떻게 구축해야합니까?


0에서 255까지 임의의 숫자를 가져온 다음 16 진수로 변환합니다.

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

RGB 16 진수 문자열은 0x0에서 0xFFFFFF까지의 숫자이므로 해당 범위에서 숫자를 생성하고 16 진수로 변환하면됩니다.

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

그 목적을 위해 md5를 사용할 수 있습니다.

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

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

원하는 경우 rand()for 를 변경할 수 있으며 , 난수를 더 멋지게 보이게하기 위해 주위에 mt_rand()둘 수 있습니다 (필수는 아니지만).strtoupper()str_pad()

완벽하게 작동하며 여기에 설명 된 다른 모든 방법보다 훨씬 간단합니다. :)


유효한 16 진수 색상은 0 ~ 9 및 A ~ F를 포함 할 수 있으므로 해당 문자로 문자열을 만든 다음 섞으면 처음 6자를 잡아 무작위 16 진수 색상 코드를 만들 수 있습니다. 예는 다음과 같습니다!

암호

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

나는 이것을 while 루프에서 테스트하고 10,000 개의 고유 한 색상을 생성했습니다.

10,000 개의 고유 한 색상을 생성하는 데 사용한 코드 :

$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'와 같은 16 진수를 생성 할 수 없다는 점을 지적했기 때문에 그런 16 진수를 생성 할 수있는 함수를 만들었습니다.

암호

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

echo randomHex();

두 번째 예제는 첫 번째 예제보다 훨씬 더 많은 다른 결과를 반환 할 수 있기 때문에 사용하는 것이 더 낫지 만 많은 색상 코드를 생성하지 않으면 첫 번째 예제가 잘 작동합니다.


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

최단 방법 :

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

이것이 내가하는 방법이다.

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

As of PHP 5.3, you can use openssl_random_pseudo_bytes():

$hex_string = bin2hex(openssl_random_pseudo_bytes(3));

If someone wants to generate light colors

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

I think this would be good as well it gets any color available

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

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

Web-safe colors are no longer necessary (nor a valid concept, even) as even mobile devices have 16+ bit colour these days.

See Wikipedia for more info.

In other words, use any colour from #000000 to #FFFFFF.

edit: Dear downvoters. Check the edit history for the question first.

참고URL : https://stackoverflow.com/questions/5614530/generating-a-random-hex-color-code-with-php

반응형