Changement de couleurs

Signaler
Messages postés
214
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
9 janvier 2019
-
Messages postés
91
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
5 août 2010
-
Voila j'aimerai changer les couleur du camembert ki se trouve généré par ce petit script, seuleument je c pas comment faire...

Ici le camembert dispose de 3 parties 50%,25% et 25%. J'aimerai que la premiere soit en vert, la seconde en rouge et la derniere en orange.

Merci de votre aide

<?php

$freq= array(50,25,25);
camembert($freq,0,800,400,15,10,1);

//$freq = table des valeurs (1 dimension)
//$ord = ordre [1=croissant | 2 =décroissant]
//$rm,$rn = rayon max ,min de l'ellipse
//$h = épaisseur
//$d1 = décalage de la 1ere tranche (en px)
//$dt = [1=décale ttes les tranches de $d1 px]

function camembert($freq,$ord,$rm,$rn,$h,$d1,$dt)
{
if($ord == 1) sort ($freq);
if($ord == 2) rsort ($freq);
$nb =count($freq);
$somme= array_sum($freq);
$im=imagecreate( intval ($rm+$d1*$dt*2+$d1*2+8),intval($rn+$d1*$dt*2+$h*3+8)); //3D
$white =imagecolorallocate($im,255,255,255);
imagecolortransparent($im,$white);
$pal= DoubleColorSet($im);
$im2=imagecreate( intval ($rm+$d1*$dt*2+$d1*2+8),intval($rn+$d1*$dt*2+$h*3+8)); //dessus
$white =imagecolorallocate($im2,255,255,255);
imagecolortransparent($im2,$white);
DoubleColorSet($im2);
for($last= 0,$i=0;$i < $nb;$i++)
{
$degree =360*($freq[$i]/$somme);
$col= $pal[(192/($nb + 1))*$i]; imagefilledarc($im,(imagesx($im)/2)+($i 0 | $dt)<gras>*$d1*cos(($last+$degree/2)/360*2*M_PI),(imagesy($im)/2)+($i</gras> 0 | $dt)*$d1*sin(($last+$degree/2)/360*2*M_PI)*($rn/$rm*1.5),$rm,$rn,$last,$last+$degree,$col,IMG_ARC_NOFILL&IMG_ARC_EDGED);
$last+ =$degree;
}
imagecopy($im2,$im,0,0,0,0,imagesx($im),imagesy($im));
ImageColorMod($im2,64);
for($i= 0;$i < $h;$i++) //effet 3D en recopiant l'image h fois sur elle même
imagecopy($im,$im,0,0,0,1,imagesx($im),imagesy($im));
imagecopy($im,$im2,0,0,0,$h,imagesx($im),imagesy($im));
drawPNG($im);
imagedestroy($im);imagedestroy($im2);
}
function ImageColorMod($im,$mod) //décale les couleurs d'une palette de $mod composantes r v b
{
$nb =imagecolorstotal($im);
for($i= 1;$i < $nb;$i++) //ne prend pas la 1e couleur (généralement le fond en transparent)
{
$rvb =imagecolorsforindex($im,$i);
if(($mod+$rvb['red'])>255) $rvb['red']= 255 - $mod;
if(($mod+$rvb['green'])>255) $rvb['green'] =255-$mod;
if(($mod+$rvb['blue'])>255) $rvb['blue']= 255 - $mod;
if(($mod+$rvb['red'])<0) $rvb['red'] =-$mod;
if(($mod+$rvb['green'])<0) $rvb['green']= -$mod;
if (($mod+$rvb['blue'])<0) $rvb['blue'] =-$mod;
imagecolorset($im,$i,$mod+$rvb['red'],$mod+$rvb['green'],$mod+$rvb['blue']);
}
}
function DoubleColorSet($im) //192 couleurs
{
for($i= 0;$i < 64;$i++)
{
$pal[$i] =imagecolorallocate($im,0,$i*3,192);
$pal[$i+64]= imagecolorallocate($im,$i * 3,192-$i*3,192);
$pal[$i+64*2] =imagecolorallocate($im,255-$i*4,0,192);
}
return($pal);
}
function drawPNG($im){static $n;$n++;imagepng($im,"tmp$n.png");echo"<img src="tmp$n.png">";}
?>

p3x

4 réponses

Messages postés
91
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
5 août 2010

$white=imagecolorallocate($im2,255,255,255);

une couleur est rencontré de plusieurs façon RVB, hexadecimal,
concretement en css,etc..) dans le cas de cet fonction il faut du RVB
dans ton cas R=255 , V=255, B=255

0 à 255 c'est la plage

si tu veu faire simple :

- http://www.dezign-box.net/webdesign/couleurs/coul4.php


Si tu veu approfondir et mieu comprendre :






-
http://fr.php.net/manual/en/function.imagecolorallocate.php
PhPeteur
Messages postés
214
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
9 janvier 2019

ok si jarrive a la changé avec les info ke tu ma donné je valdide ta reponse merci =)

p3x
Messages postés
214
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
9 janvier 2019

dsl mais j'ai un peu tout essayé et je ne voi pas kel lignes modifié pour avoir les couleur ke je souhaite =(


pouvez vous maider ?

p3x
Messages postés
91
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
5 août 2010

Exemple au lieu de ça :



$white= imagecolorallocate($im,255,255,255);
imagecolortransparent ($im,$white);

tu veux du vert?

le code de couleur peut être :

R: 0

V:255

B:0

Tu peux bien entendu faire varier ton vert,(122,pour une mi teinte...), de 0 à 255 ...

ça donne :


$vert =imagecolorallocate($im,0,255,0); //imagecolorallocate(R,V,B)
imagecolortransparent($im,$vert);





du Rouge :

Soit :R : 255, V:0 ,B:0

D'où :
$rouge=imagecolorallocate($im,0,255,0);



imagecolortransparent($im,$rouge);


allez je te laisse deviner pour le bleu :)




PhPeteur