J'ai trouvé que la fonction suivante peut dessiner un dégradé vertical en PHP. Cependant, de nombreux concepteurs de sites Web aiment que leurs dégradés aient une source lumineuse en haut à gauche pour rendre le dégradé plus réaliste. Alors, comment est-ce que je change légèrement l'angle sur le gradient vertical, le faisant dans un léger gradient? Je ne veux pas l'exagérer complètement, mais juste un léger mouvement vers la droite en descendant le gradient vertical.Comment puis-je dessiner un dégradé légèrement diagonal remplir en PHP?
<?php
function hex2rgb($sColor) {
$sColor = str_replace('#','',$sColor);
$nLen = strlen($sColor)/3;
$anRGB = array();
$anRGB[]=hexdec(str_repeat(substr($sColor,0,$nLen),2/$nLen));
$anRGB[]=hexdec(str_repeat(substr($sColor,$nLen,$nLen),2/$nLen));
$anRGB[]=hexdec(str_repeat(substr($sColor,2*$nLen,$nLen),2/$nLen));
return $anRGB;
}
$nWidth = 960;
$nHeight = 250;
$sStartColor = '#2b8ae1';
$sEndColor = '#0054a1';
$nStep = 1;
$hImage = imagecreatetruecolor($nWidth,$nHeight);
$nRows = imagesy($hImage);
$nCols = imagesx($hImage);
list($r1,$g1,$b1) = hex2rgb($sStartColor);
list($r2,$g2,$b2) = hex2rgb($sEndColor);
$nOld_r = 0; $nOld_g = 0; $nOld_b = 0;
for ($i = 0; $i < $nRows; $i=$i+1+$nStep) {
$r = ($r2 - $r1 != 0) ? intval($r1 + ($r2 - $r1) * ($i/$nRows)): $r1;
$g = ($g2 - $g1 != 0) ? intval($g1 + ($g2 - $g1) * ($i/$nRows)): $g1;
$b = ($b2 - $b1 != 0) ? intval($b1 + ($b2 - $b1) * ($i/$nRows)): $b1;
if ("$nOld_r,$nOld_g,$nOld_b" != "$r,$g,$b") {
$hFill = imagecolorallocate($hImage, $r, $g, $b);
}
imagefilledrectangle($hImage, 0, $i, $nCols, $i+$nStep, $hFill);
$nOld_r= $r;
$nOld_g= $g;
$nOld_b= $b;
}
header("Content-type: image/png");
imagepng($hImage);
imagerotate() n'est pas là pour moi sur PHP 5.2.4. Il indique sur la page php.net pour cette fonction que c'est une des fonctions de la bibliothèque GD qui a une fuite de mémoire et n'est pas inclus avec Ubuntu (qui est ce que je cours). Vous avez une autre option? – Volomike
http://www.php.net/manual/fr/function.imagerotate.php#93151 Je n'ai jamais utilisé cette fonction - mais quelqu'un a posté une autre fonction imageRotate pour résoudre ce problème qui semble assez prometteur. – thetaiko
J'ai essayé beaucoup de ceux-ci et j'ai trouvé que imagerotateEquivalent() a fait l'affaire! Merci, thetaiko. – Volomike