php Imagick 实现等比缩放图片
网站本来是用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;
[*] }
[*]}
页:
[1]