これが私が使用している現在のコードです。
<? header("Content-type: image/png");
// example: <img src="gradient.php?height=600&width=100&start=00FF00&end=ff0000" />
$height=100;
$width=1;
$start='000000';
$end='FFFFFF';
extract($_REQUEST); // overwrite using vars from url
$start_r = hexdec(substr($start,0,2));
$start_g = hexdec(substr($start,2,2));
$start_b = hexdec(substr($start,4,2));
$end_r = hexdec(substr($end,0,2));
$end_g = hexdec(substr($end,2,2));
$end_b = hexdec(substr($end,4,2));
$image = @imagecreate($width,$height);
for($y=0;$y<$height;$y++){
for($x=0;$x<$width;$x++){
if($start_r==$end_r) $new_r = $start_r;
$difference = $start_r-$end_r;
$new_r = $start_r-intval(($difference/$height)*$y);
if($start_g==$end_g) $new_g = $start_g;
$difference = $start_g-$end_g;
$new_g = $start_g-intval(($difference/$height)*$y);
if($start_b==$end_b) $new_b = $start_b;
$difference = $start_b - $end_b;
$new_b = $start_b-intval(($difference/$height)*$y);
$row_color = imagecolorresolve($image,$new_r,$new_g,$new_b);
imagesetpixel($image,$x,$y,$row_color);
}
}
imagepng($image);
imagedestroy($image);
?>
上記のコードは、垂直 (上から下) のグラデーションを作成するのに最適ですが、水平のグラデーションも作成できるようにしたいと考えています。私は PHP について非常によく理解していますが、PHP の画像関数を扱うことはあまりありません。誰かが私を助けてこれを理解することができれば、本当に感謝しています!