86 votes

Générer un code couleur hexagonal aléatoire avec PHP

Je travaille sur un projet où je dois générer un nombre indéfini de codes de couleur hexadécimaux aléatoires Comment puis-je construire une telle fonction en PHP ?

3 votes

Qu'entendez-vous exactement par "web safe" ? L'ancien concept de "Couleurs sûres pour le Web" n'est plus d'actualité.

0 votes

Chaque couleur a un code hexadécimal mais seules certaines sont garanties d'être rendues de la même manière sur tous les ordinateurs. Un peu de lecture : bit.ly/hnFAbB

3 votes

Comme le dit @Pekka, c'est un concept très dépassé qui date de l'époque où certains ordinateurs ne disposaient que de quelques centaines ou milliers de couleurs. Tout ordinateur susceptible de consulter le web de nos jours peut gérer des millions de couleurs. Un peu de lecture : fr.wikipedia.org/wiki/Web_colors#Web-safe_colors

3voto

ceejayoz Points 85962

Les couleurs sûres pour le Web ne sont plus nécessaires (ni même un concept valable), car même les appareils mobiles ont des couleurs de plus de 16 bits de nos jours.

Voir Wikipedia pour plus d'informations.

En d'autres termes, utilisez toute couleur comprise entre #000000 et #FFFFFF.

éditer : Chers downvoters. Vérifiez d'abord l'historique des modifications de la question.

3voto

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

2voto

garrettlynch Points 433

Cette version est fortement basée sur la version de @Galen ci-dessus, cependant, je voulais ajouter un contrôle de gamme qui pourrait limiter la couleur produite au rouge, vert, bleu, plus clair ou plus foncé. Cela pourrait être utile à d'autres.

function random_colour_part($lower, $upper)
{
    //randomly select colour in range and convert to hexidecimal
    return str_pad(dechex(mt_rand($lower, $upper)), 2, '0', STR_PAD_LEFT);
}

function random_colour($colour)
{
    //loop through colour
    foreach ($colour as $key => $value)
    {
        //retrieve each r,g,b colour range and generate random hexidecimal colour
        if ($key == "r") $r = random_colour_part($value[0], $value[1]);
        if ($key == "g") $g = random_colour_part($value[0], $value[1]);
        if ($key == "b") $b = random_colour_part($value[0], $value[1]);
    }

    //return hexidecimal colour
    return "#" . $r . $g . $b;
}

//generate a random red-based colour
echo random_colour(["r"=>[0,255], "g"=>[0,0], "b"=>[0,0]]);

//generate a random light green-based colour (use only half of the 255 range)
echo random_colour(["r"=>[0,0], "g"=>[127,255], "b"=>[0,0]]);

//generate a random colour of any sort
echo random_colour(["r"=>[0,255], "g"=>[0,255], "b"=>[0,255]]);

1voto

Jeff Janes Points 379

Je pense que ce serait bien aussi il obtient n'importe quelle couleur disponible

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

0voto

function randomRGB()
{
    $r = rand(0, 255);
    $g = rand(0, 255);
    $b = rand(0, 255);

    return "rgb({$r}, {$g}, {$b})";
}

function randomHexColor()
{
    return '#' . substr(str_shuffle('ABCDEF0123456789'), 0, 6);
}

$hexColor = randomHexColor();
$rgbColor = randomRGB();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X