Cercle de couleur avec en effet 3D

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 673 fois - Téléchargée 10 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

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);

?>

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.