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

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)