当前位置:编程问答 > php >

php Imagick 实现等比缩放图片

网站本来是用GD实现的等比图片的缩放,后来在网上发现Imagick比GD更好一些所以重写了一个方法是用Imagick来实现图片的等比缩放!

代码如下:

 

  1. /** 
  2.      * 使用imagick 等比缩放图片 
  3.      * @param string $source_img  源图片地址 
  4.      * @param string $target_img  缩放后图片地址 
  5.      * @param int $with   缩放后图片宽度 
  6.      * @param int $height  缩放后图片高度 
  7.      */ 
  8.     public function imagick($source_img,$target_img,$with,$height){ 
  9.         if(is_file($source_img)){ //判断源图片是否存在 
  10.             $im = new Imagick(); 
  11.         }else
  12.             exit
  13.         } 
  14.         $result = $im->readImage($source_img);  
  15.         $srcWH = $im->getImageGeometry(); //获取源图片宽和高 
  16.         //图片等比例缩放宽和高设置 ,根据宽度设置等比缩放 
  17.         if($srcWH['width']>$with){ 
  18.             $srcW['width'] = $with
  19.             $srcH['height'] = $srcW['width']/$srcWH['width']*$srcWH['height']; 
  20.         }else
  21.             $srcW['width'] = $srcWH['width']; 
  22.             $srcH['height'] = $srcWH['height']; 
  23.         } 
  24.          
  25.         //按照比例进行缩放 
  26.         $im->thumbnailImage( $srcW['width'], $srcH['height'], true );  
  27.          
  28.         // 按照缩略图大小创建一个有颜色的图片 
  29.         $new_imgnew Imagick(); 
  30.         $new_img->newImage( $srcW['width'], $srcH['height'], 'white''jpg' ); //pink,black 
  31.          
  32.         //合并图片 
  33.         $new_img->compositeImage( $im, imagick::COMPOSITE_OVER, 0, 0);  
  34.         //生成图片 
  35.         $new_img->setImageFileName($target_img); 
  36.         $new_img->writeImage(); 
  37.         //输出图片 
  38.         header( "Content-Type: image/jpg" ); 
  39.         echo $new_img
  40.     } 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,