Navegando me encontré un script php que permite generar un efecto de reflejo como el de los siguientes ejemplos:
Altura del reflejo igual a la de la de la imagen:

Código utilizado (altura del reflejo igual a la de la imagen):
<img src="ejemplos/img/6.jpg" /><br /><img src="ejemplos/reflection.php?im=img/6.jpg" />
Altura del reflejo igual al 50% de la de la imagen:

Código utilizado (altura del reflejo igual al 50% de la de la imagen):
<img src="ejemplos/img/17.jpg" /><br /><img src="ejemplos/reflection.php?im=img/17.jpg&porcentaje=50" />
Altura del reflejo igual al 20% de la de la imagen:

Código utilizado (altura del reflejo igual al 20% de la de la imagen):
<img src="ejemplos/img/9.jpg" /><br /><img src="ejemplos/reflection.php?im=img/9.jpg&porcentaje=20" />
En todos los casos el reflejo es creado mediante el archivo
reflection.php, al cual le pasamos como parámetros la ruta de la imagen -variable
im- y el porcentaje de imagen que queremos reflejar -variable
porcentaje-. El código de ese archivo php es el siguiente:
<?php
/*---- credits: http://www.pixel2life.com/publish/tutorials/928/php_gd_image_reflections/ ----*/
header('content-type: image/jpeg');
$im = $_GET['im']; // The input image
$porcentaje=isset($_GET['porcentaje'])?$_GET['porcentaje']:100;
$size = getimagesize($im);
$rH = $size[1]*$porcentaje/100;// Reflection height
$tr = 0; // Starting transparency
$div = 0; // Size of the divider line
$w = $size[0];
$h = $size[1];
$im = imagecreatefromjpeg($im);
$li = imagecreatetruecolor($w, 1);
$bgc = imagecolorallocate($li, 255, 255, 255); // Background color
imagefilledrectangle($li, 0, 0, $w, 1, $bgc);
$bg = imagecreatetruecolor($w, $rH);
$wh = imagecolorallocate($im,255,255,255);
$im = imagerotate($im, -180, $wh);
imagecopyresampled($bg, $im, 0, 0, 0, 0, $w, $h, $w, $h);
$im = $bg;
$bg = imagecreatetruecolor($w, $rH);
for ($x = 0; $x < $w; $x++) {
imagecopy($bg, $im, $x, 0, $w-$x, 0, 1, $rH);
}
$in = 100/$rH;
for($i=0; $i<=$rH; $i++){
if($tr>100) $tr = 100;
imagecopymerge($bg, $li, 0, $i, 0, 0, $w, 1, $tr);
$tr+=$in;
}
imagecopymerge($bg, $li, 0, 0, 0, 0, $w, $div, 100); // Divider
imagejpeg($bg);
imagedestroy($im);
imagedestroy($li);
?>