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

  • 相关阅读:
    硬件重定向
    ARM处理器模式切换(含MRS,MSR指令)
    ARM处理器工作模式
    ARM处理器异常处理
    JS和H5做一个音乐播放器,附带源码
    php页面zend加密乱码的解决办法
    ZendOptimizer怎么安装?Php网站打开显示乱码
    PHP和Python如何选择?或许可以考虑这三个问题
    SQL Server 2008读书笔记(3):表
    Dijkstra算法
  • 原文地址:https://www.cnblogs.com/dereckbu/p/8142977.html
Copyright © 2011-2022 走看看