• 技术文章 >后端开发 >php教程

    php等比缩放图片

    2016-07-28 08:26:18原创825
    步骤如下:
    1.获取图片的基本信息
    用这个getimagesize函数

    2.判断图片资源类型并创建对应图片资源
    用这个getPicType函数(自定义函数)

    3.计算缩放比例
    原则是取最小的缩放系数.例如:800*600的图片,缩放到200*200以下,则缩放系数为scale=200/800>200/600?200/600:200/800; 因为1/4 < 1/3 所以选用1/4的缩放系数

    4.计算缩放后的尺寸
    wdith = floor(800*1/4);向下取整
    height = floor(600*1/4);
    结果缩放后的图片变为200*150

    5.创建目标图像资源
    用这个imagecreatetruecolor函数,创建一个真彩的图像

    6.等比缩放
    用这个imagecopyresampled函数实现缩放

    7.输出图像
    用这个outputImage函数(自定义函数)

    8.释放图片资源
    用这个imagedestroy函数

    缩放前后如图:
    750*525
     php等比缩放图片
    200*140
     php等比缩放图片

    代码如下:

    /**
     * @function 等比缩放函数(以保存的方式实现)
     * @param string $picname 被缩放的处理图片源
     * @param int $maxX 缩放后图片的最大宽度
     * @param int $maxY 缩放后图片的最大高度
     * @param string $pre 缩放后图片名的前缀名
     * @return string 返回后的图片名称(带路径),如a.jpg --> s_a.jpg
     */functionscalePic($picname,$maxX=100,$maxY=100,$pre='s_')
    {$info = getimagesize($picname); //获取图片的基本信息$width = $info[0];//获取宽度$height = $info[1];//获取高度//判断图片资源类型并创建对应图片资源$im = getPicType($info[2],$picname);
        //计算缩放比例$scale = ($maxX/$width)>($maxY/$height)?$maxY/$height:$maxX/$width;
        //计算缩放后的尺寸$sWidth = floor($width*$scale);
        $sHeight = floor($height*$scale);
        //创建目标图像资源$nim = imagecreatetruecolor($sWidth,$sHeight);
        //等比缩放
        imagecopyresampled($nim,$im,0,0,0,0,$sWidth,$sHeight,$width,$height);
        //输出图像$newPicName = outputImage($picname,$pre,$nim);
        //释放图片资源
        imagedestroy($im);
        imagedestroy($nim);
        return$newPicName;
    }
    
    /**
     * function 判断并返回图片的类型(以资源方式返回)
     * @param int $type 图片类型
     * @param string $picname 图片名字
     * @return 返回对应图片资源
     */functiongetPicType($type,$picname)
    {$im=null;
        switch($type)
        {
            case1:  //GIF$im = imagecreatefromgif($picname);
                break;
            case2:  //JPG$im = imagecreatefromjpeg($picname);
                break;
            case3:  //PNG$im = imagecreatefrompng($picname);
                break;
            case4:  //BMP$im = imagecreatefromwbmp($picname);
                break;
            default:
                die("不认识图片类型");
                break;
        }
        return$im;
    }
    
    /**
     * function 输出图像
     * @param string $picname 图片名字
     * @param string $pre 新图片名前缀
     * @param resourse $nim 要输出的图像资源
     * @return 返回新的图片名
     */functionoutputImage($picname,$pre,$nim)
    {$info = getimagesize($picname);
        $picInfo = pathInfo($picname);
        $newPicName = $picInfo['dirname'].'//m.sbmmt.com/m/'.$pre.$picInfo['basename'];//输出文件的路径switch($info[2])
        {
            case1:
                imagegif($nim,$newPicName);
                break;
            case2:
                imagejpeg($nim,$newPicName);
                break;
            case3:
                imagepng($nim,$newPicName);
                break;
            case4:
                imagewbmp($nim,$newPicName);
                break;
        }
        return$newPicName;
    }

    ').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了 php等比缩放图片,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    上一篇:yum升级PHP501->PHP530 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)
  • 相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 工具包分享:PHP实现滑块验证图片• PHP中的SimpleXML处理_PHP教程• PHP header函数分析详解_PHP教程• 超级全面的PHP面试题整理集合第1/2页_PHP教程• 专为新手写的结合smarty的类第1/3页_PHP教程
    1/1

    PHP中文网