//$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">";}
?>
jonguignolo
Messages postés92Date d'inscriptionsamedi 8 mars 2003StatutMembreDernière intervention19 avril 2022 19 févr. 2005 à 02:13
$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