29 September 2008

Осторожно, скользко! Играемся с изображением в ПХП. Эффект мокрого пола.

Lumber room
Как реализовать эффект мокрого пола?

А все очень просто!

Надо всего лишь зайти под “cut” и посмотреть… =)

Задача: реализовать эффект мокрого пола

Решение: PHP + GD
А все просто… =)

Код без пояснений…
Думаю, кому это надо, те и так поймут.

function reflection(&$img,$perc=50,$maxAlpha=127)
{
$src_height = imagesy($img);
$src_width = imagesx($img);
$dest_height = $src_height + ($src_height / (100/$perc));
$dest_width = $src_width;

$reflected = imagecreatetruecolor($dest_width, $dest_height);
imagealphablending($reflected, false);
imagesavealpha($reflected, true);

imagecopy($reflected, $this->img, 0, 0, 0, 0, $src_width, $src_height);
$reflection_height = $src_height / 2;
for($y=$src_height;$y<$dest_height;$y++)
{
$alpha = (($y-$src_height)/($dest_height-$src_height))*$maxAlpha;
for($x=0;$x<$src_width;$x++)
{
$rgba = imagecolorat($img, $x, $src_height - ($y-$src_height+1));
$rgba = imagecolorsforindex($img, $rgba);
$rgba = imagecolorallocatealpha($reflected, $rgba['red'], $rgba['green'], $rgba['blue'], $alpha);
imagesetpixel($reflected, $x, $y, $rgba);
}
}
$img = $reflected;
}


UPD По просьбе трудящихся
Пример:
image

Тест и код с подсветкой можно найти в моем блоге.
Tags:phpgdimageswet floorмокрый полотражение
Hubs: Lumber room
+22
256 33
Comments 27