dog1888 发表于 2018-12-20 12:45:10

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]
查看完整版本: php Imagick 实现等比缩放图片