zoukankan      html  css  js  c++  java
  • PHP 将上传的图片将图片大小变小而且不失真 阿星小栈

    等比例缩放就好了 上传成功后,可以使用php原生的GD库(扩者框架里写好的方法)

    GD库方法:
    这里是以前写的封装成的函数

    主要逻辑在 : 计算缩放后的图片尺寸

    *形参列表:picname:图片文件名称

      • maxWidth 图片被缩放后的最大宽度

      • maxHeight 图片被缩放后的最大高度

      • pre 缩放后的图片名前缀,默认为"s_" 根据需要改
        *返回值:布尔值表示成功与否。

     

    function imageResize($picname,$path,$maxWidth,$maxHeight,$pre="s_"){
    
          $path = rtrim($path,"/")."/";
            //1获取被缩放的图片信息
            $info = getimagesize($path.$picname);
            //获取图片的宽和高
            $width = $info[0];
            $height = $info[1];
    
            //2根据图片类型,使用对应的函数创建画布源。
            switch($info[2]){
                case 1: //gif格式
                $srcim = imagecreatefromgif($path.$picname);
                break;
            case 2: //jpeg格式
                $srcim = imagecreatefromjpeg($path.$picname);
                break;
            case 3: //png格式
                $srcim = imagecreatefrompng($path.$picname);
                break;
               default:
                return false;
                //die("无效的图片格式");
                break;
            }
            //3. 计算缩放后的图片尺寸
            if($maxWidth/$width<$maxHeight/$height){
                $w = $maxWidth;
                $h = ($maxWidth/$width)*$height;
            }else{
                $w = ($maxHeight/$height)*$width;
                $h = $maxHeight;
            }
            //4. 创建目标画布
            $dstim = imagecreatetruecolor($w,$h); 
    
            //5. 开始绘画(进行图片缩放)
            imagecopyresampled($dstim,$srcim,0,0,0,0,$w,$h,$width,$height);
    
            //6. 输出图像另存为
            switch($info[2]){
                case 1: //gif格式
                    imagegif($dstim,$path.$pre.$picname);
                    break;
                case 2: //jpeg格式
                    imagejpeg($dstim,$path.$pre.$picname);
                    break;
                case 3: //png格式
                    imagepng($dstim,$path.$pre.$picname);
                    break;
            }
    
            //7. 释放资源
            imagedestroy($dstim);
            imagedestroy($srcim);
            return true;
    }                    

    援引:https://segmentfault.com/q/1010000008921318

  • 相关阅读:
    72.2801 LOL-盖伦的蹲草计划(广搜)
    71.双向最短路径:聚会
    POJ 2531 Network Saboteur
    POJ 3274 Gold Balanced Lineup(哈希)
    POJ 3349 Snowflake Snow Snowflakes(哈希)
    (重)POJ 3020Antenna Placement
    HDU 1098 Ignatius's puzzle
    中国海洋大学第四届朗讯杯高级组 I Cuckoo for Hashing
    中国海洋大学第四届朗讯杯高级组 A Rocky
    CF 217 B. Berland Bingo
  • 原文地址:https://www.cnblogs.com/dereckbu/p/8142977.html
Copyright © 2011-2022 走看看