begin process at 2012 02 15 04:34:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > DÉGRADÉ

DÉGRADÉ


 Information sur la source

Note :
9,1 / 10 - par 10 personnes
9,10 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :07/06/2004 Date de mise à jour :18/01/2005 09:50:14 Vu / téléchargé :9 485 / 441

Auteur : arnal69130

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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=2 55&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

  • <?//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);?>
<?//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)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

18 janvier 2005 09:50:14 :
Correction suite à la suggestion de didrocks.

 Sources du même auteur

Source avec Zip Source avec une capture CALENDRIER : ASSISTANT DE SAISIE DE DATE DANS UN FORMULAIRE
Source avec une capture HACHURES
Source avec une capture "LA PAGE NE PEUX PAS ÊTRE ACTUALISÉE SANS LE RENVOI D'INFORM...
PRÉCHARGER TOUTES LES IMAGES D'UN RÉPERTOIRE

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

Commentaires et avis

Commentaire de ceced le 07/06/2004 16:35:28

trés propre, j adore..

Commentaire de coockiesch le 07/06/2004 19:25:48

Simple, efficace! Bravo!

@++

R@f

Commentaire de mickaelpfr le 08/06/2004 13:33:15

Très propre , simple a réutiliser :)
j'aurais toutefois utilisé utilisé une fonction pour y faire appel avec la couleur de début / celle de fin / orientation :)
mais bien.

@++

Commentaire de defkrie le 08/06/2004 14:36:43

je mets 8/10.ct bein écrit simple et rapide.

Commentaire de arnal69130 le 08/06/2004 14:42:02

Merci, vous allez me faire rougir !
;o)

Commentaire de plopman le 08/06/2004 17:21:18

merci de ta source, ca marche niquel :o)
Bonne continuation
PLoPmaN

Commentaire de didrocks le 16/07/2004 12:29:19

je comprends pas pkoi ça ne fonctionne pas chez moi.
J'ai pourtant extension=php_gd2.dll de chargé avec easyphp. J'ai mis dans le rep de mon index.php ton fichier et j'ai mis dans la partie html d'index <img src="degrade.php?l=980&h=610&sens=3&r1=0&v1=0&b1=255&r2=255&v2=0&b2=0" alt="degrade" />
As-tu une idée de ce qui cloche?

Commentaire de didrocks le 16/07/2004 14:39:39

J'ai compris, le pb vient de là, par exemple (en fait, à chaque utilisation de tableau):
$c1=array(r=>$_GET["r1"],v=>$_GET["v1"],b=>$_GET["b1"]);
à remplacer par:
$c1=array('r'=>$_GET["r1"],'v'=>$_GET["v1"],'b'=>$_GET["b1"]);
et ainsi de suite

Commentaire de sabugo le 18/11/2005 21:21:27

Hello !!!

Très bon script. J'essaye de m'en inspirer pour créer un générateur de dégradé un peu plus avancé, permettant de passer une série de couleur avec un ratio pour chacune.
Seulement, je n'arrive pas à obtenir un dégradé "fluide"... dès qu'il y a plus de 2 couleurs, ça part en vrille et les couleurs centrales sont très saccadées au niveau des passages de dégradés...

Voici mon code, si quelqu'un a une idée pour avoir un meilleur visuel, ça serait sympa de m'expliquer :)



<?

$l=400;
$h=200;
$sens=1; //sens : 1->horizontal, 2->vertical, 3->diagonal

$tab = array
(
array( 'r'=>0xff, 'v'=>0x00, 'b'=>0x00, 'ratio' => 0 ),
array( 'r'=>0x00, 'v'=>0x00, 'b'=>0xff, 'ratio' => 100 ),
array( 'r'=>0x00, 'v'=>0xff, 'b'=>0x00, 'ratio' =>255 )
);
//---

$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
$index = 0;
$percent = $t / 255 * 100;
$nCount = 0;
while( $index+1 < count( $tab ) )
{
$c1 = $tab[$index];
$c2 = $tab[$index + 1];

for( $i = $nCount; $i<$c2['ratio'] * $percent / 100; $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;
}
$nCount++;
}
$index++;
}


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


?>


A++

Thierry

Commentaire de sabugo le 18/11/2005 22:07:19

Ben nan, tout compte fait, je fais ça en Flash, c'est plus simple :)


a++

Commentaire de elidris le 20/05/2006 12:50:47

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

Commentaire de Fredido le 13/11/2006 18:05:45

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?l=980&h=610&sens=3&couleur1=000000&couleur2=FFFFFF

sinon bravo pour le script ;)

Commentaire de XelectroX le 27/06/2008 11:39:43 9/10

Super :)
Remplace juste "<?" par "<?php". ;)

Commentaire de hornetbzz le 02/01/2010 12:28:25 10/10

super comme base pour jouer sans chercher des heures les fonctions de base ;-)

Commentaire de JJDai le 20/03/2011 14:17:28

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

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales