php怎么实现图片压缩

php实现图片压缩的方法:首先通过“openImage”方法打开图片;然后使用“thumpImage”操作图片;接着将原图复制到图片载体上,并按照一定比例压缩;最后输出图片即可。

php怎么实现图片压缩

推荐:《PHP视频教程》

PHP实现图片压缩同时保持清晰度

代码如下:

src = $src;        $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 =  '123.png';//原图片名称$dst_img = 'text.png';//压缩后图片的名称$percent = 1;  #原图压缩,不缩放,但体积大大降低$image = (new imgcompress($source,$percent))->compressImg($dst_img);

登录后复制

以上就是php怎么实现图片压缩的详细内容,更多请关注【创想鸟】其它相关文章!

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

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

(0)
上一篇 2025年2月24日 19:45:11
下一篇 2025年2月20日 00:37:35

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

相关推荐

  • php如何去掉中括号

    php去掉中括号的方法:首先创建一个PHP示例文件;然后通过正则表达式“preg_replace(‘/[.*?]/’, ”, $str);”去除中括号以及中括号里面的内容;最后通过echo输出运行结果即可…

    2025年2月24日
    200
  • php签到功能的实现

    php签到功能的实现方法:首先在数据库里建两张表,一个是用户的积分表,一个是签到状态表;然后通过时间戳的判断,及时更新状态表;最后根据上次签到时间和这次签到时间进行比较判断有没有漏签和今日是否已签到即可。 推荐:《PHP视频教程》 首先我在…

    2025年2月24日
    200
  • php魔术方法的认识

    在php中将所有以“__”即两个下划线开头的类方法保留为魔术方法,PHP中魔术方法有“__construct()”、“__destruct()”、“__call()”、“__callStatic()”、“__get()”等等。 推荐:《PH…

    2025年2月24日
    200
  • php如何替换所有符合条件的字符串

    php替换所有符合条件的字符串的方法:可以利用preg_replace()函数来实现。preg_replace()函数用于执行一个正则表达式的搜索与替换。 php提供了一个函数preg_replace(),它可以很好的实现我们的需求。下面来…

    2025年2月24日
    200
  • php怎么判断字符串不为空

    php判断字符串不为空的方法:可以利用empty()函数来进行判断。empty()函数用于判断一个变量是否被认为是空,如果变量不存在,或它的值等于false,那么它就会被认为不存在。 php中有一个函数empty(),它用于检查一个变量是否…

    2025年2月24日
    200
  • php如何去掉字符串首尾字符

    php去掉字符串首尾字符的方法:可以利用trim()函数来实现。trim()函数可以移除字符串两侧的空白字符或其他预定义字符,并返回已修改的字符串,如【trim($str)】。 如果要移除字符串两侧的字符,可以使用php内置函数trim()…

    2025年2月24日
    200
  • php如何在不同页面之间传值

    php在不同页面之间传值的方法:1、利用post传值;2、利用get传值;3、利用session传值。session是全局变量的一种,经常用于用户登录后保存用户id之类的常用数据,选择session是非常好的选择。 常用的三种方法: 一、P…

    2025年2月24日
    200
  • php中的array函数有什么用

    php中的array函数的作用:array()函数用于创建数组。例如我们要创建一个索引数组,语法为【array(value1,value2,value3】。如果要创建一个空数组,代码为【$new = array()】。 php中的array…

    2025年2月24日
    200
  • php怎么安装pdo_mysql扩展

    php安装pdo_mysql扩展的方法:1、编译安装pdo_mysql,生成mysql.so;2、打开php.ini配置文件,修改配置【extension=mysql.so】;3、重启apache。 具体方法如下: (推荐教程:php视频教…

    2025年2月24日
    200
  • php如何禁止列目录

    php禁止列目录的实现方法:首先找到并打开“httpd.conf”文件;然后在“Options Indexes FollowSymLinks”的“Indexes”前面加上“–”符号;最后保存修改即可。 推荐:《PHP视频教程》 Apache…

    2025年2月24日
    200

发表回复

登录后才能评论