Fonction pour obtenir une couleur en héxa

Résolu
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 26 mai 2010 à 16:36
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 27 mai 2010 à 15:55
Bonjour,

je voudrais savoir s'il existe une fonction qui retourne une couleur en hexadécimal de façon aléatoire ??

Merci à vous,
A voir également:

9 réponses

Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
26 mai 2010 à 17:24
Hello,

Le plus facile il me semble c'est de généréer des couleurs aléatoires a partir de RGB (0 à 255) car tu n'auras qu'a utiliser des rand.

Après une petite fonction pour convertir le rgb en hexa.

dechex te convertis tes nombre int en hexa et sinon il y a une petite gestion d'erreur.

Voilà si tu ne comprends pas la source, dis moi.


<?php
function rgb2hexa($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;
}
$macouleur = rgb2hexa(rand(0, 255), rand(0, 255), rand(0, 255));
?>

_________________________________
Min iPomme
3
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
27 mai 2010 à 07:46
Salut,

Belle petite fonction

Une autre approche :
<?php
function randHexaColor() {
    return sprintf("#%02X%02X%02X", rand(0,255), rand(0,255), rand(0,255));
}
echo randHexaColor();
?>


Je me suis limité strictement à la question (== générer une couleur aléatoire)

Cordialement,

Kohntark -
3
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
26 mai 2010 à 18:01
Merci à toi mais la seule ligne de code que je ne comprends pas :
if (is_array($r) && sizeof($r) == 3)
       list($r, $g, $b) = $r;
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
26 mai 2010 à 18:11
C'est pour appeler ta fonction comme ca :
<?php
rgb2hexa(array(255, 200, 0));
?>

_________________________________
Min iPomme
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
26 mai 2010 à 18:34
ok merci à toi pour le code, c'est effectivement plus facile..
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
26 mai 2010 à 18:58
De rien !


Tu peux valider le message pour faciliter le parcours du forum....




<--- A coté du message avec la fonction
_________________________________
Min iPomme
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
26 mai 2010 à 18:59
J'ai parlé trop vite, bonne continuation


_________________________________
Min iPomme
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
27 mai 2010 à 08:34
J'oublie toujours le sprintf...

_________________________________
Min iPomme
0
cs_lilj Messages postés 204 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
27 mai 2010 à 15:55
merci pour la fonction sprintf ça peut toujours servir ailleur !!
0
Rejoignez-nous