1
我目前正在編程一個背景圖像使用PHP的顏色漸變爲所有瀏覽器不支持CSS3。我有以下代碼:PHP圖像顏色漸變顯示不正確
<?php
header("Content-Type: image/png");
$from=array("R"=>255, "G"=>255, "B"=>255);
$to=array("R"=>170, "G"=>221, "B"=>255);
$width=500;
$height=1000;
$image=imagecreate($width, $height);
for($y=0; $y < $height; $y++)
{
imageline($image, 0, $y, $width, $y, imagecolorallocate($image, $from["R"]-(($from["R"]-$to["R"])/$height)*$y, $from["G"]-(($from["G"]-$to["G"])/$height)*$y, $from["B"]-(($from["B"]-$to["B"])/$height)*$y));
}
imagepng($image);
?>
它似乎很簡單,但我真的不知道爲什麼圖像顯示不正確。如下圖所示,但梯度應該高1000px。
陣列中沒有足夠的項目來跨越1000像素的高度。你需要擴展整個事物。你可以使用ImageMagick嗎?那裏會更容易些。 –
但是爲什麼這個扮演什麼角色呢?使用表達式「(($ from [」R「] - $ to [」R「])/ $ height)」我計算顏色步長的大小。我的$ y是當前步驟的編號。在for循環的最後一個循環$ y將是$ height-1。假設我的for循環的條件是$ y <= $ height,那麼我可以取消$ y和$ height。 –
我明白了,您已經考慮到了這一點。嗯,那麼這個邏輯肯定有一些缺陷......我現在不能發現它。也許嘗試調試R值並查看它「破壞」的位置。無論如何,漸變高度似乎爲255像素,我100%確定這與問題的根本原因有關。 –