• PHP 图片进行压缩函数(GD库)


        php 图片进行压缩函数(GD库),需要安装GD库扩展,安装lnmp的是自动开启的。附上代码:

        function yasuo_image($imgsrc,$size_kb,$number=50){
            chmod($imgsrc, 0777);   #给图片赋权限
    
            $imgdst = $imgsrc;   #(新文件地址)覆盖源文件
    
            list($width, $height, $type) = getimagesize($imgsrc);
         
            $new_width = $width;//压缩后的图片宽
            $new_height = $height;//压缩后的图片高
                 
            if($width >= 2000){
              $per = 2000 / $width;//计算比例
              $new_width = $width * $per;
              $new_height = $height * $per;
            }
            
            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);
                  //90代表的是质量、压缩图片容量大小
                  imagejpeg($image_wp, $imgdst, $number);
                  imagedestroy($image_wp);
                  imagedestroy($image);
                }
                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);
                //90代表的是质量、压缩图片容量大小
                imagejpeg($image_wp, $imgdst, $number);
                imagedestroy($image_wp);
                imagedestroy($image);
                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);
                //90代表的是质量、压缩图片容量大小
                imagejpeg($image_wp, $imgdst, $number);
                imagedestroy($image_wp);
                imagedestroy($image);
                break;
            }
            #清除文件资源缓存
            clearstatcache(); 
            $filesize = filesize($imgdst);
            $size = $size_kb * 1024;    //压缩后最大为多大
            if($filesize <= $size){
                return $imgdst;
            }else{
                $number = floor($number/2);
                if($number > 1){
                    $imgdst = yasuo_image($imgdst,$size_kb,$number);
                }
                
            }
            return $imgdst;
        }

     文章转自:PHP 图片进行压缩函数(GD库)_PHP函数库-考高分网 (kaotop.com)

  • 相关阅读:
    DedeCMS用channelartlist调用顶级栏目及列表
    利用SQL语句替换织梦DedeCms数据库内容
    PHP 获取当前目录下的所有文件
    APP 商城功能
    left join , inner join 区别
    微信支付现金红包接口(转)
    微信红包发送规则
    PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析(转)
    调用微信红包接口返回(转)
    一起发红包 微信平台红包接口调用教程(转)
  • 原文地址:https://www.cnblogs.com/68xi/p/15954373.html
Copyright © 2020-2023  润新知