php压缩图片

/*图片压缩函数

    $route;//原图片的存放路径

    $maxwidth="640";//设置图片的最大宽度

    $maxheight="1136";//设置图片的最大高度

    $name=$destination_folder.$current_time;//压缩图片存放路径加名称,不带后缀

    $filetype="jpg";//图片类型

    */

public function resizeImage($route,$name,$filetype)

    {

        $imagesize =  getimagesize(WEB_PATH .$route);//图片保存路径

        $img_w = $imagesize[0];//获取原图宽

        $img_h = $imagesize[1];//获取原图高

 

        $proportion = $img_h/$img_w;

        $maxwidth = 640;

//设置图片宽度  等比压缩

        $maxheight = $maxwidth*$proportion;

 

        $im = '';

        if( !strcasecmp($filetype,"jpg") || !strcasecmp($filetype,"jpeg") ){

            $im=imagecreatefromjpeg("$route");//参数是原图片的存放路径

        }

        else if( !strcasecmp($filetype,"png")  ){

            $im=imagecreatefrompng("$route");//参数是原图片的存放路径

        }

        else if( !strcasecmp($filetype,"gif")  ){

            $im=imagecreatefromgif("$route");//参数是原图片的存放路径

        }

 

        $pic_width = imagesx($im);

        $pic_height = imagesy($im);

        if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)){

            if($maxwidth && $pic_width>$maxwidth){

                $widthratio = $maxwidth/$pic_width;

                $resizewidth_tag = true;

            }

            if($maxheight && $pic_height>$maxheight){

                $heightratio = $maxheight/$pic_height;

                $resizeheight_tag = true;

            }  

            if($resizewidth_tag && $resizeheight_tag){

                if($widthratio<$heightratio)

                    $ratio = $widthratio;

                else

                    $ratio = $heightratio;

            }

            if($resizewidth_tag && !$resizeheight_tag)

                $ratio = $widthratio;

            if($resizeheight_tag && !$resizewidth_tag)

                $ratio = $heightratio;

            $newwidth = $pic_width * $ratio;

            $newheight = $pic_height * $ratio;

 

            if(function_exists("imagecopyresampled")){

                $newim = imagecreatetruecolor($newwidth,$newheight);//PHP系统函数

                imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP系统函数

            }

            else{

                $newim = imagecreate($newwidth,$newheight);

                imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);

            }

            $name = $name.".".$filetype;

            if( !strcasecmp($filetype,"jpg") || !strcasecmp($filetype,"jpeg") ){

                imagejpeg($newim,$name);

            }

            else if( !strcasecmp($filetype,"png")  ){

                imagepng($newim,$name);

            }

            // else if( !strcasecmp($filetype,"gif")  ){   //不处理GIF文件因为压缩后就不会动了,开注释可处理

            //  imagegif($newim,$name);

            // }

            imagedestroy($newim);

        }

        else{   //原图小于设定的最大长度和宽度,则不进行压缩,原图输出

            $name = $name.".".$filetype;

            if( !strcasecmp($filetype,"jpg") && !strcasecmp($filetype,"jpeg") ){

                imagejpeg($im,$name);

            }

            else if( !strcasecmp($filetype,"png")  ){

                imagepng($im,$name);

            }

            // else if( !strcasecmp($filetype,"gif")  ){   //不处理GIF文件因为压缩后就不会动了,开注释可处理

            //  imagegif($im,$name);

            // }

        }

    }

 

 

tp5 调用

   if ($file) {

 

                $info = $file->move(WEB_PATH . 'uploads');

 

                if ($info) {

                 $imgpath =  'uploads/'.$info->getSaveName();

                 $date_path = 'uploads/'.date('Ymd');

                    if(!file_exists($date_path)){  

                        mkdir($date_path,0777,true);  

                    }

                    $img_name = $info->getFilename();

                    $type = $info->getExtension();

                    $img_name=explode('.', $img_name);

                    $img_name=$img_name[0];

                    $thumb_path = $date_path.'/'.$img_name;

                    $thumb_path_name = $thumb_path.'.'.$type ;

                  //压缩后的图片名字 替换原图的名字 保存

 

                $this->resizeImage($imgpath,WEB_PATH.$thumb_path,$type);

你可能感兴趣的:(tp5,tp5,上传图片,压缩图片)