Cercle de couleur avec en effet 3D

0/5 (2 avis)

Snippet vu 5 311 fois - Téléchargée 13 fois

Contenu du snippet

Bonjour,

Après quelques recherche sur la toile, je me suis appercu qu'il n'y avait pas d'exemple
de code permettant de faire un jolie point de couleur sur une image avec un legé effet 3D...

	
<?php
    //----------------------------------------------------------------------------------
	// Convertion d'un code couleur html en rgb
	//----------------------------------------------------------------------------------
	function color_rgb($html_color) {
		if(preg_match("/^[#]([0-9a-fA-F]{6})$/",$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;
		} 
		return false;
	}
	
	
	//----------------------------------------------------------------------------------
	// Creation d'un cercle avec effet 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, createcolor($image, array($r, $g, $b)));
		}
	}
	
	// Demo d'un point vert sur une carte de la corse
    $image = ImageCreateFromJpeg('corse.jpg') or die ("Erreur lors du chargemnt de l'image de fond");          
    circle($image,10,20,30,color_rgb('#00FF00'));
    header ("Content-type: image/png"); 
	ImagePng ($image); 
	
	

A voir également

Ajouter un commentaire Commentaires
Utilisateur anonyme
23 juin 2016 à 17:13
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);

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.