Php - Générer un fond dégradé avec GD

09/04/2010 | Voir d'autres articles sur les thèmes:

Ce script va permettre de générer un fond dégradé (2 couleurs) automatiquement, en spécifiant les couleurs, dimensions, et sens, en paramètres $_GET


Son usage est simple, il faut y faire appel dans une balise img, en spécifiant les caractéristiques dans l\'adresse de l\'image.


 


Usage :


degrade.php?couleur1=#hexadecimal&couleur2=#hexadecimal&sens=1

( Sens peut être égal à 1 (horizontal), 2 (vertical) ou 3 (diagonal) )


 


Le code php :


<?php


$couleur1=$_GET["couleur1"];

$couleur2=$_GET["couleur2"];


$r1=$_GET["r1"]=hexdec( substr($couleur1,0,2));

$v1=$_GET["v1"]=hexdec( substr($couleur1,2,2));

$b1=$_GET["b1"]=hexdec( substr($couleur1,4,2));


$r2=$_GET["r2"]=hexdec( substr($couleur2,0,2));


$v2=$_GET["v2"]=hexdec( substr($couleur2,2,2));

$b2=$_GET["b2"]=hexdec( substr($couleur2,4,2));


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

?>


 


Vous trouverez le script en pièce jointe à cet article (format .zip)

Tu as aimé? T'as qu'à liker ;)
Voir d'autres articles sur les thèmes:
Envie de réagir ?
Autres articles #GKDV