Imagick allows you to easily add a gradient to an image.
// The gradient
$gradient = new Imagick();
// Create new Image with size x, size y, “gradient start – gradient end“
$gradient->newPseudoImage( 930,20,”gradient:transparent-#838383″);
// $im would be the canvas or image you loaded before. This merges both, the image gradient at position x, position y
$im->compositeImage( $gradient, imagick::COMPOSITE_OVER, 0, 240 );
This can easily be transformed to create a reflection, by mirroring the original and applying the the gradient to the mirrored image.
Cheers
Alexander