在前面给大家介绍了imagick在ubuntu下的基本安装,及简单的处理图片,今天尝试使用imgaick来创建水中倒影的效果.
以下是代码片段:
< ?php
/**
* reflection
*
*/
function reflection($image){
/* 读取原图片 */
$im = new Imagick($image);
/* 创建缩图 */
$im->thumbnailImage( 200, null );
/*加边框 */
$im->borderImage( "white", 5, 5 );
/* 克隆并创建镜像图片 */
$reflection = $im->clone();
$reflection->flipImage();
/* 创建一个滤镜效果,合成 */
$gradient = new Imagick();
$gradient->newPseudoImage( $reflection->getImageWidth() + 10,
$reflection->getImageHeight() + 10,
"gradient:transparent-black"
);
/*合成 */
$reflection->compositeImage( $gradient, imagick::COMPOSITE_OVER, 0, 0 );
/* 设置透明度*/
$reflection->setImageOpacity( 0.3 );
/* 创建一个空白背景图层,足够大 */
$canvas = new Imagick();
$width = $im->getImageWidth() + 40;
$height = ( $im->getImageHeight() * 2 ) + 30;
$canvas->newImage( $width, $height, "black", "png" );
/* 合成最终效果图*/
$canvas->compositeImage( $im, imagick::COMPOSITE_OVER, 20, 10 );
$canvas->compositeImage( $reflection, imagick::COMPOSITE_OVER,
20, $im->getImageHeight() + 10 );
/* 输出图片*/
header( "Content-Type: image/png" );
echo $canvas;
}
reflection(’me.jpg’);
?>