Dégradé

Soyez le premier à donner votre avis sur cette source.

Vue 11 860 fois - Téléchargée 532 fois

Description

Ce code permet tout simplement de faire un zoli dégradé entre 2 couleurs défini par leurs composantes RVB.
Grace au paramètre sens, le dégradé peut se faire soit horizontalement sur la longueur (sens=1), soit verticalement sur la hauteur (sens=2), soit en diagonal (sens=3).

-> Téléchargez le fichier dégradé.php contenant le code.
-> Faites appel à ce fichier en précisant les paramètres :
<img src="degrade.php?l=980&h=610&sens=3&r1=0&v1=0&b1=255&r2=255&v2=0&b2=0" alt="degrade" />

NB : La bibliothèque GD2 est nécessaire pour utiliser les fonctions php de gestions d'images, donc, dans php.ini, décommenter le ligne
extension=php_gd2.dll

Source / Exemple :


<?//lecture des paramètres ---
$l=$_GET["l"];
$h=$_GET["h"];
$sens=$_GET["sens"]; //sens : 1->horizontal, 2->vertical, 3->diagonal
$c1=array('r'=>$_GET["r1"],'v'=>$_GET["v1"],'b'=>$_GET["b1"]);
$c2=array('r'=>$_GET["r2"],'v'=>$_GET["v2"],'b'=>$_GET["b2"]);
//---

$im=imagecreatetruecolor($l,$h);
$blanc=imagecolorallocate($im,255,255,255);
switch ($sens)
{
    case 1 : $t=$l; break;
    case 2 : $t=$h; break;
    case 3 : $t=$l+$h; break;
}

//on dessine une ligne verticale, horizontale ou diagonale pour chaque pixel entre 0 et $t
for ($i=0;$i<$t;$i++)
{
   $r = $c1['r'] + $i*($c2['r']-$c1['r'])/$t;
   $v = $c1['v'] + $i*($c2['v']-$c1['v'])/$t;
   $b = $c1['b'] + $i*($c2['b']-$c1['b'])/$t;
   $c=imagecolorallocate($im,$r,$v,$b);
   switch ($sens)
   {
       case 1 : imageline($im,$i,0,$i,$h,$c); break;
       case 2 : imageline($im,0,$i,$l,$i,$c); break;
       case 3 : imageline($im,max(0,($i-$h)),min($i,$h),min($i,$l),max(0,($i-$l)),$c); break;
   }
}

header("Content-Type: image/png");
imagepng($im);
imagedestroy($im);?>

Conclusion :


Voila, maintenant on peut aussi faire le dégradé en diagonale, et les longueur, hauteur, sens et couleurs sont en paramètres.
;o)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
291
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
13 mars 2015

Bonjour
Sympa et efficace.
mais existe-il une méthode capable de faire le même chose avec une zone difforme.
Par exemple les départements d'une carte de France.
JJDAI
Messages postés
59
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
3 janvier 2011

super comme base pour jouer sans chercher des heures les fonctions de base ;-)
Messages postés
209
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 novembre 2009

Super :)
Remplace juste "<?" par "<?php". ;)
Messages postés
1
Date d'inscription
jeudi 22 janvier 2004
Statut
Membre
Dernière intervention
13 novembre 2006

Une variante : ajouter ceci en début de script :

$couleur1=$_GET["couleur1"];
$couleur2=$_GET["couleur2"];

$r1=hexdec( substr($couleur1,0,2));
$v1=hexdec( substr($couleur1,2,2));
$b1=hexdec( substr($couleur1,4,2));

$r2=hexdec( substr($couleur2,0,2));
$v2=hexdec( substr($couleur2,2,2));
$b2=hexdec( substr($couleur2,4,2));

et vous pourrez passer couleur1 , couleur de départ, et couleur2 en couleur d'arrivée, en écriture HTML

> degrade.php?l980&h=610&sens=3&couleur1=000000&couleur2=FFFFFF

sinon bravo pour le script ;)
Messages postés
125
Date d'inscription
lundi 15 août 2005
Statut
Membre
Dernière intervention
9 octobre 2007

Trop trop génial ! merci arnal69130 , j'en revient pas tellement ça tue !!!
;)
Afficher les 15 commentaires

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.