美文网首页
php图片压缩居中裁剪

php图片压缩居中裁剪

作者: 程序猿某人_ | 来源:发表于2019-12-20 18:33 被阅读0次

    用于业务需求,需要进行图片处理,图片压缩生成缩略图,超过规定尺寸要居中裁剪,现封装一个图片处理方法,直接调用即可:

     /**
        * desription 压缩图片
        * @param sting $imgsrc 图片路径
        * @param string $imgdst 压缩后保存路径
        * @param string $imgWidth 新图片宽度
        * @param string $imgHeight 新图片高度
        * @param string $imgHeight 压缩质量0-100
        */
    protected function compressed_image($imgsrc,$imgdst,$imgWidth,$imgHeight,$quality=100){
          list($width,$height,$type)=getimagesize($imgsrc);
          $new_width = $imgWidth; //$pic_config['width'];
          $new_height = $imgHeight; //$pic_config['height'];
    
          //按照比例最小比例压缩  
          if($width/$height > $new_width/$new_height) {
            //以高为标准
            $new_width = $new_height * ($width / $height);
          }else{
            //以宽度为准
            $new_height = $new_width * ($height / $width);
          }
    
          switch($type){
            case 1:
              //$giftype=check_gifcartoon($imgsrc);
              //if($giftype){
                 header('Content-Type:image/gif');
                $image_wp=imagecreatetruecolor($new_width, $new_height);
                $image = imagecreatefromgif($imgsrc);
                imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                //75代表的是质量、压缩图片容量大小
                imagejpeg($image_wp, $imgdst, $quality);
                imagedestroy($image_wp);
              //}
               
              break;
            case 2:
              header('Content-Type:image/jpeg');
              $image_wp=imagecreatetruecolor($new_width, $new_height);
              $image = imagecreatefromjpeg($imgsrc);
              imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
              imagejpeg($image_wp, $imgdst,$quality);
              imagedestroy($image_wp);
              break;
            case 3:
             header('Content-Type:image/png');
              $image_wp=imagecreatetruecolor($new_width, $new_height);
              $image = imagecreatefrompng($imgsrc);
              imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
              imagejpeg($image_wp, $imgdst,$quality);
              imagedestroy($image_wp);
              break;
          }
    
            //创建目标图像
            $dst_im = imagecreatetruecolor($imgWidth, $imgHeight);
            $white = imagecolorallocate($dst_im, 255, 255, 255);
            imagefill($dst_im, 0, 0, $white);
    
            //源图像
            $src_im = @imagecreatefromjpeg($imgdst);
    
            $height = $width = 0;
            if($new_width > $imgWidth) {
                $width = ($new_width - $imgWidth) / 2;
            }
            if($new_height > $imgHeight) {
                $height = ($new_height-$imgHeight) / 2;
            }
            imagecopy( $dst_im, $src_im, 0, 0, $width, $height, $imgWidth, $imgHeight );
            imagejpeg($dst_im, $imgdst);
            imagedestroy($dst_im);
        }
    

    如有疑问可以联系wechat: gratitude369

    相关文章

      网友评论

          本文标题:php图片压缩居中裁剪

          本文链接:https://www.haomeiwen.com/subject/ktytictx.html