[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Зеркальное отражение рисунка под углом
ant3627
Здрасте!
Подскажите, как средствами РНР пристроить к фото (png,gif,jpg) зеркальное отражение под некоторым углом и с меньшей яркостью (угол и яркость с возможностью коррекции).
Скрипт на JS имеется, но только несколько громоздкий и отражение параллельное.
На РНР это умещается в несколько строчек - уже у кого-то видел, но думал не пригодится и не сохранил, а щас, вдруг, захотелось.



Спустя 4 часа, 39 минут, 9 секунд (22.02.2011 - 20:47) ant3627 написал(а):
Всем спасибо!
Нашел скриптик, который искал. Я его таки скопировал!
Правда, строк оказалось больше, чем "несколько", и выводит отражение не под углом, но, думаю, можно подправить будет.

<?php

$img="./pic/small_regats/image001.jpg";
$so = imagecreatefromjpeg($img);

function imagereflection($src_img)
{
$src_height = imagesy($src_img);
$src_width = imagesx($src_img);
$dest_height = $src_height + ($src_height / 1);
$dest_width = $src_width;

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

imagecopy($reflected, $src_img, 0, 0, 0, 0, $src_width, $src_height);
$reflection_height = $src_height / 1;
$alpha_step = 80 / $reflection_height;
for ($y = 1; $y <= $reflection_height; $y++)
{
for ($x = 0; $x < $dest_width; $x++)
{
//copy ($pixel from $x / $src_height - $y to $x / $src_height + $y);
$rgba = imagecolorat($src_img, $x, $src_height - $y);
$alpha = ($rgba & 0x7F000000) >> 24;
$alpha = max($alpha, 7 + ($y * $alpha_step));
$rgba = imagecolorsforindex($src_img, $rgba);
$rgba = imagecolorallocatealpha($reflected, $rgba['red'], $rgba['green'], $rgba['blue'], $alpha);
imagesetpixel($reflected, $x, $src_height + $y - 1, $rgba);
}
}


return $reflected;
}
$dd=imagereflection($so);
header("content-type: image/png");
imagepng($dd);

?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.