JeuWeb - Crée ton jeu par navigateur
imagecolorat, travailler en hexadecimal? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : imagecolorat, travailler en hexadecimal? (/showthread.php?tid=1646)



imagecolorat, travailler en hexadecimal? - Argorate - 04-10-2010

Bonjour,

Je voulais savoir s'il était facile, pour me simplifier la vie, de travailler en hexadécimal avec la fonction GD imagecolorat()

Actuellement j'utilise comme l'exemple #2 le montre sur le lien ci-dessus.
Autrement dit j’obtiens un tableau avec le chiffre en 0 et 255 pour le RVB.

Moi j'aurais aimé travaillé avec les codes hexadécimaux des couleurs, avoir $couleur = 'FFFFF'; au lieu d'avoir $rvb = array('red' => 255, 'green' => 255, 'blue' => 255);

Y a t-il une fonction qui convertit ou autre moyen d'arriver a ce résultat?

Merci.


RE: imagecolorat, travailler en hexadecimal? - Plume - 04-10-2010

Comme j'étais surpris que tu sois le seul à exprimer ce besoin, je suis allé sur la page de documentation que tu as toi même donné et j'ai survolé les commentaires laissés par les développeurs.

Et j'ai pu trouver ceci ( http://fr.php.net/manual/fr/function.imagecolorat.php#70783 ) :
function average($img) {
$w = imagesx($img);
$h = imagesy($img);
$r = $g = $b = 0;
for($y = 0; $y < $h; $y++) {
for($x = 0; $x < $w; $x++) {
$rgb = imagecolorat($img, $x, $y);
$r += $rgb >> 16;
$g += $rgb >> 8 & 255;
$b += $rgb & 255;
}
}
$pxls = $w * $h;
$r = dechex(round($r / $pxls));
$g = dechex(round($g / $pxls));
$b = dechex(round($b / $pxls));
if(strlen($r) < 2) {
$r = 0 . $r;
}
if(strlen($g) < 2) {
$g = 0 . $g;
}
if(strlen($b) < 2) {
$b = 0 . $b;
}
return "#" . $r . $g . $b;
}



RE: imagecolorat, travailler en hexadecimal? - Sephi-Chan - 04-10-2010

(04-10-2010, 02:24 PM)_who a écrit : Comme j'étais surpris que tu sois le seul à exprimer ce besoin, je suis allé sur la page de documentation que tu as toi même donné et j'ai survolé les commentaires laissés par les développeurs.

Pourquoi pas lire de l'anglais tant qu'on y est !


Sephi-Chan


RE: imagecolorat, travailler en hexadecimal? - Plume - 04-10-2010

Mais rien qu'en lisant la fonction, on voit tout de suite que c'est ce qu'on veut. D'ailleurs, c'presque comme ça que je l'ai repéré : en mattant le return;.


RE: imagecolorat, travailler en hexadecimal? - keke - 04-10-2010

heu ... average, ca veut dire moyenne.

Je crois que la fonction permet de calculer la couleur moyenne de l'image.

Kéké


RE: imagecolorat, travailler en hexadecimal? - Plume - 04-10-2010

Ce n'est pas grave ça. Cette fonction apporte tout de même les informations nécessaires pour développer une fonction qui fasse ce que demande Argorate. Je n'ai pas écrit que la fonction publiée répondait à la demande.

Et ce n'est qu'un début, il y a d'autres exemples qui se rapprochent encore plus de la demande quand on continue de lire.

C'était surtout une façon détournée de dire : RTFM


RE: imagecolorat, travailler en hexadecimal? - Argorate - 08-10-2010

Pour ceux que ça interesse...


function convert_to_hexa($color)
{
$r = dechex($color['red']);
$g = dechex($color['green']);
$b = dechex($color['blue']);

if(strlen($r) < 2) $r = 0 . $r;
if(strlen($g) < 2) $g = 0 . $g;
if(strlen($b) < 2) $b = 0 . $b;

return $r.$g.$b;
}

Thx.