PHP之压缩图片

这几天写项目也是遇到了需要手机上传图片.时代在进步.所以图片体积也越来越大.考虑到服务器的感受.所以需要将图片压缩下.

这里也是自己建立了一个新的公告方法.通过调用此方法.也是将4M的图片压缩到了400k.效果还可以.所以分享下.

  /**
     * desription 压缩图片
     * @param sting $imgsrc 图片路径
     * @param string $imgdst 压缩后保存路径
     */
    public function compressedImage($imgsrc, $imgdst) {
        list($width, $height, $type) = getimagesize($imgsrc);

        $new_width = $width;//压缩后的图片宽
        $new_height = $height;//压缩后的图片高

        if($width >= 600){
            $per = 600 / $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, 90);
                    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, 90);
                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, 90);
                imagedestroy($image_wp);
                imagedestroy($image);
                break;
        }
    }

直接调用该方法 传入需要的参数就可以了 ?

4 1 vote5 1

Article Rating

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP开发之将jpng的图片转换为png格式

    上午遇到了一个需求.就是将小程序生成的码拼接个文字.小程序生成二维码也好.小程序码也罢.这些之前都有接触过.三下五除二就生成了.接下来的工作也是需要进行文字的拼...

    桑先生
  • Fastadmin使用—技巧提升篇

    距离上次水文章.大概可能也许已经过去了半个月到时间.今天有空重新记录下关于Fastadmin使用上的一些技巧.

    桑先生
  • WordPress网站中添加百度统计代码

    百度统计是流量分析平台,帮助收集网站访问数据,提供流量趋势、来源分析、转化跟踪、页面热力图、访问流等多种统计分析服务,同时与百度搜索、百度推广、云服务无缝结合,...

    桑先生
  • 机器学习课程_笔记03

    jeremyxu
  • 问与答68: 如何改变复选框颜色?

    A:在Excel中有3种不同类型的复选框,包括:用户窗体中的复选框、表单控件中的复选框、ActiveX控件中的复选框。下面分别介绍如何修改它们内部颜色。

    fanjy
  • JVM内存分析,以及一步步详解Java程序是如何运行的?

    最终还是决定更加深入地学习下JVM,同时也用自己的理解详细地说明Java程序是如何运行的。

    刘小爱
  • Java虚拟机内存模型【小白版】

    同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。

    Java帮帮
  • 什么是Kotlin?Java终结者?

    什么是Kotlin Kotlin是一个基于JVM的新的编程语言,2010年由IntelliJ IDEA所在的JetBrains公司开发,自2012年以来一直开源...

    Java技术栈
  • jquery 事件和动画

    blur focus load resize scroll unload click dbclick mousedown mouseup mousemo...

    用户5760343
  • FreeRTOS例程3-串口中断接收不定长的数据与二值信号量的使用

    串口中断属于STM32本身的资源,不涉及到FreeRTOS,但可与FreeRTOS配合使用。

    xxpcb

扫码关注云+社区

领取腾讯云代金券