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

  • 相关阅读:
    Linq之旅:Linq入门详解(Linq to Objects)(转)
    第四章 禅坐和外相的修行
    第三章 生活就是我们的修行
    第二章 更正我们的知见
    第一章 明了佛陀的教导(宁静的森林水池)
    第二章 取其一半
    你的程序员是在努力工作还是在偷懒?
    给JavaScript初学者的24条最佳实践
    简单理解Socket
    oracle18c linux x86-64 install 杂记
  • 原文地址:https://www.cnblogs.com/dereckbu/p/8142977.html
Copyright © 2011-2022 走看看