Cercle de couleur avec en effet 3D

Signaler
Messages postés
32
Date d'inscription
vendredi 19 mai 2000
Statut
Membre
Dernière intervention
21 juillet 2015
-
 Utilisateur anonyme -
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/101095-cercle-de-couleur-avec-en-effet-3d

a028762
Messages postés
1
Date d'inscription
mardi 5 janvier 2016
Statut
Membre
Dernière intervention
5 janvier 2016

Bonjour
la fonction createcolor ne semble pas exister ?
Une erreur de copier/coller sans doute...
Utilisateur anonyme > a028762
Messages postés
1
Date d'inscription
mardi 5 janvier 2016
Statut
Membre
Dernière intervention
5 janvier 2016

Bonjour,

Oui, la fonction createcolor n'existe pas, j'ai donc pris l'initiative de refaire un code source qui fonctionne :

<?php

// On créé une image de dimensions 100x100
$image = imagecreatetruecolor(100,100);

// Cette fonction convertit un code couleur HTML en code couleur RGB
function color_rgb($html_color)
{
$hex_R = substr($html_color,1,2);
$hex_G = substr($html_color,3,2);
$hex_B = substr($html_color,5,2);
$RGB = array(hexdec($hex_R),hexdec($hex_G),hexdec($hex_B));

return $RGB;
}

// Fonction qui dessine un cercle avec des effets 3D
function circle($image, $cx, $cy, $rayon, $color)
{
$diffs = array(
(255-$color[0])/$rayon,
(255-$color[1])/$rayon,
(255-$color[2])/$rayon,
($rayon/4)/$rayon
);

for($i=0; $i<$rayon; $i++)
{
$r = round($color[0] + ($diffs[0]*$i));
$g = round($color[1] + ($diffs[1]*$i));
$b = round($color[2] + ($diffs[2]*$i));
$e = $rayon - round($rayon - ($diffs[3]*$i));

imagefilledellipse($image, $cx-$e, $cy-$e, $rayon-$i, $rayon-$i, imagecolorallocate($image,$r,$g,$b));
}
}

// On dessine un cercle avec effet 3D en vert,
// de rayon 80 pixels,
// avec comme coordonnées (50;50)
circle($image,50,50,80,color_rgb('#00FF00'));

// On envoie l'image au navigateur
header('Content-type: image/png');
imagepng($image);

?>