您的位置:首页 > 编程语言 > PHP开发

php Imagick 实现等比缩放图片

2012-02-13 11:50 1271 查看
网站本来是用GD实现的等比图片的缩放,后来在网上发现Imagick比GD更好一些所以重写了一个方法是用Imagick来实现图片的等比缩放!

代码如下:

/**
* 使用imagick 等比缩放图片
* @param string $source_img  源图片地址
* @param string $target_img  缩放后图片地址
* @param int $with   缩放后图片宽度
* @param int $height  缩放后图片高度
*/
public function imagick($source_img,$target_img,$with,$height){
if(is_file($source_img)){ //判断源图片是否存在
$im = new Imagick();
}else{
exit;
}
$result = $im->readImage($source_img);
$srcWH = $im->getImageGeometry(); //获取源图片宽和高
//图片等比例缩放宽和高设置 ,根据宽度设置等比缩放
if($srcWH['width']>$with){
$srcW['width'] = $with;
$srcH['height'] = $srcW['width']/$srcWH['width']*$srcWH['height'];
}else{
$srcW['width'] = $srcWH['width'];
$srcH['height'] = $srcWH['height'];
}

//按照比例进行缩放
$im->thumbnailImage( $srcW['width'], $srcH['height'], true );

// 按照缩略图大小创建一个有颜色的图片
$new_img= new Imagick();
$new_img->newImage( $srcW['width'], $srcH['height'], 'white', 'jpg' ); //pink,black

//合并图片
$new_img->compositeImage( $im, imagick::COMPOSITE_OVER, 0, 0);
//生成图片
$new_img->setImageFileName($target_img);
$new_img->writeImage();
//输出图片
header( "Content-Type: image/jpg" );
echo $new_img;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 php Imagick