php压缩图片

博客给出了图片压缩函数的代码,可根据设定的最大宽度等参数对不同类型图片进行等比压缩,不处理GIF文件以免失去动态效果。同时展示了TP5调用该函数的代码,实现图片上传并压缩保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*图片压缩函数

    $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);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值