다음은 현재 사용중인 코드입니다.PHP를 사용하여 왼쪽에서 오른쪽으로 그라디언트를 만들 수있는 스크립트가 있습니까?
<? 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 이미지 함수는 자주 다루지 않습니다. 누군가가 나를 도울 수 있고 이것을 알아낼 수 있다면 정말 고맙겠습니다!
당신은 아마 모든 이동할 수 첫 번째 루프에 imagesetpixel()을 제외한 코드 줄 - 다른 줄은 $ x와 함께 변경되지 않으므로 각 픽셀의 색을 계산하는 것보다 훨씬 빠릅니다. –
죄송합니다. 코드 줄마다 $ x for loop –
이 스크립트를 수정할 수 없다면 "PHP에 대해 잘 알고있다"고 말할 수는 없습니다. 이미지 기능에 익숙하지 않은 것은 중요하지 않습니다 ... 스크립트의 기능은 매우 분명합니다. 스크립트에없는 기능은 사용하지 않아도됩니다. 나는 네가 게으르다 고 생각한다. – mpen