php如何压缩图片保持大小不变

压缩方法:1、使用getimagesize()函数获取图像信息;2、将原图复制到图片载体上,使用imagecopyresampled()函数按比例压缩,并保持清晰度和图片长宽不变;3、使用saveImage()保存图片。

php如何压缩图片保持大小不变

本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

PHP不改变图片长宽只改变图片体积大小的压缩方法

现在基本上很多网站都有图片管理,包括企业站也是,很多图片为了保证质量可能需要高清,但是图片太大的话,对于服务器也是个压力,每次加载页面的时候光页面图片就得好长时间,影响用户体验。

当然,如果有钱你可以

立即学习“PHP免费学习笔记(深入)”;

点击下载“嗨格式压缩大师”;

1.cdn静态资源包

2.oss管理文件资源,不一定是图片,也可以是文件哦

3.搭建自己的文件服务器,图片当然可以了

不过以上好是好,不过都得花钱,我感觉还是从根本上解决比较好,来吧,那我们就上代码把

src = $srcurl;            $this->percent = $percent;    }        /** 高清压缩图片     * @param string $saveName  提供图片名(可不带扩展名,用源图扩展名)用于保存。或不提供文件名直接显示          */    public function compressImg($saveName='')    {            $this->_openImage();            if(!empty($saveName)) $this->_saveImage($saveName);  //保存       else $this->_showImage();    }        /**     * 内部:打开图片     */    private function _openImage()    {            list($width, $height, $type, $attr) = getimagesize($this->src);            $this->imageinfo = array(                      'width'=>$width,            'height'=>$height,            'type'=>image_type_to_extension($type,false),            'attr'=>$attr        );                $fun = "imagecreatefrom".$this->imageinfo['type'];                $this->image = $fun($this->src);                $this->_thumpImage();    }        /**     * 内部:操作图片          */    private function _thumpImage()    {    $new_width = $this->imageinfo['width'] * $this->percent;            $new_height = $this->imageinfo['height'] * $this->percent;            $image_thump = imagecreatetruecolor($new_width,$new_height);            //将原图复制到图片载体上面,并且按照一定比例压缩,极大的保持了清晰度        imagecopyresampled($image_thump,$this->image,0,0,0,0,$new_width,$new_height,$this->imageinfo['width'],$this->imageinfo['height']);        imagedestroy($this->image);                $this->image = $image_thump;    }    /**     * 输出图片:保存图片则用saveImage()          */    private function _showImage()    {            header('Content-Type: image/'.$this->imageinfo['type']);            $funcs = "image".$this->imageinfo['type'];            $funcs($this->image);    }        /**     * 保存图片到硬盘:     * @param  string $dstImgName  1、可指定字符串不带后缀的名称,使用源图扩展名 。2、直接指定目标图片名带扩展名。     */    private function _saveImage($dstImgName)    {            if(empty($dstImgName)) return false;            $allowImgs = ['.jpg', '.jpeg', '.png', '.bmp', '.wbmp','.gif'];   //如果目标图片名有后缀就用目标图片扩展名 后缀,如果没有,则用源图的扩展名        $dstExt =  strrchr($dstImgName ,".");                $sourseExt = strrchr($this->src ,".");                if(!empty($dstExt)) $dstExt =strtolower($dstExt);                if(!empty($sourseExt)) $sourseExt =strtolower($sourseExt);                //有指定目标名扩展名        if(!empty($dstExt) && in_array($dstExt,$allowImgs)){                    $dstName = $dstImgName;        }elseif(!empty($sourseExt) && in_array($sourseExt,$allowImgs)){                    $dstName = $dstImgName.$sourseExt;        }else{                    $dstName = $dstImgName.$this->imageinfo['type'];        }                $funcs = "image".$this->imageinfo['type'];                $funcs($this->image,$dstName);    }        /**     * 销毁图片          */    public function __destruct(){        imagedestroy($this->image);    }}$source =  '1.jpg';//原图片名称$dst_img = 'text.png';//压缩后图片的名称$percent = 1;  #原图压缩,不缩放,但体积大大降低$image = (new imgcompress($source,$percent))->compressImg($dst_img);//新图片名字叫什么名字可以自己定

登录后复制

这是一个图片类,把类引入你的文件,最后只需要在需要的地方调用这个类里的方法就可以了。

推荐学习:php视频教程

以上就是php如何压缩图片保持大小不变的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2516942.html

(0)
上一篇 2025年3月5日 15:58:00
下一篇 2025年3月5日 15:58:10

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php提示Array怎么办

    本文将讲解数组当成了字符串使用,php提示array to string conversion的两种解决方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 第一种 这种场景比较少,大多数都是新手才会犯,也很容易发现解决错…

    2025年3月5日
    000
  • linux如何配置php环境变量

    设置方法:1、打开profile配置文件;2、执行“export PATH=$PATH:/路径”命令添加PHP运行目录;3、使用“:wq”命令保存配置并退出;4、执行“source /etc/profile”命令使添加的配置生效。 本文操作…

    2025年3月5日
    200
  • 如何将PHP数组数据转换为json

    在php中,可以使用json_encode()函数来将数组数据转换成json。json_encode()函数可以对变量进行json编码,如果转换成功则返回json数据,反之则返回false。 本教程操作环境:windows7系统、PHP7.…

    2025年3月5日
    200
  • php错误日志怎么看

    查看方法:1、配置“php.ini”文件;2、使用phpinfo()命令查看错误日志地址;3、使用“vi /etc/php.ini”命令查看日志位置;4、使用“tail -f -50 /var/php_errors.log”查看日志。 本教…

    2025年3月5日
    200
  • 在PHP中如何为匿名函数指定this

        关于闭包匿名函数,在js中有个很典型的问题就是要给它绑定一个 this 作用域。其实这个问题在php中也是存在的,比如下面这段代码: $func = function($say){    echo $this->name, ‘…

    2025年3月5日
    200
  • 如何利用PHP来输出一个杨辉三角

        杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1;杨辉三角的每一个数是它的左上方和右上方的数的和,我们可以将其理解为一个二维数组,通过两次循环来输出数据。 1、什么是杨辉三角?     杨辉三角是二项式系数…

    2025年3月5日
    200
  • php怎么自动跳转到指定页面

    在php中,可以利用header()函数来自动跳转到指定页面;只需要在PHP文档的最开头添加“header(“location:指定页面的地址”)”或“header(‘Refresh:时间数值,Url=指…

    2025年3月5日
    200
  • PHP如何进行模糊查询

    模糊查询的方法:1、使用SQL匹配模式,操作符使用“LIKE”或“NOT LIKE”,匹配时,不区分大小写;2、使用正则表达式匹配模式,操作符使用“REGEXP”或“NOT REGEXP”,正则表达式可出现在匹配字段的任意位置。 本教程操作…

    2025年3月5日 编程技术
    200
  • php时间如何转化为星期几

    转换方法:1、使用date()和“strtotime(指定日期)”将日期转换成表示星期的数字;2、定义“array(“日”,”一”,”二”,”三&#8221…

    2025年3月5日
    200
  • PHP中连接符大于号、等号大于号的意思

      在学习php中,遇到了->和=>这两个符号。   刚遇到这两个符号的时候不知道它们代表的含义,在经过百度后才发这两个符号的秘密。  下面来看一下在PHP中->的秘密,如下代码。 speed+=10; } }$car =…

    2025年3月5日
    200

发表回复

登录后才能评论