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

    PHP按一定比例压缩图片(保持清晰度)

    藏色散人藏色散人2019-12-25 13:48:07转载1790
    图片压缩是我们日常开发中经常使用的操作,在如今需求很多的情况往往,上传的一张图片会被压缩成不同比例的图片,每次去操作也是一件非常繁琐的事情,于是进行了封装了一个压缩图片的操作类,希望大家遇到后,不用再为写很多压缩图片代码烦恼了。

    压缩图片的工具类:

    <?php
    /**
     图片压缩操作类
     v1.0
    */
       class Image{
       
       private $src;
       private $imageinfo;
       private $image;
       public  $percent = 0.1;
       public function __construct($src){
       
       $this->src = $src;
       
       }
       /**
       打开图片
       */
       public 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);
       }
       /**
       操作图片
       */
       public 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;
       }
       /**
       输出图片
       */
       public function showImage(){
       
        header('Content-Type: image/'.$this->imageinfo['type']);
    $funcs = "image".$this->imageinfo['type'];
    $funcs($this->image);
       
       }
       /**
       保存图片到硬盘
       */
       public function saveImage($name){
       
        $funcs = "image".$this->imageinfo['type'];
    $funcs($this->image,$name.'.'.$this->imageinfo['type']);
       
       }
       /**
       销毁图片
       */
       public function __destruct(){
       
       imagedestroy($this->image);
       }
       
       }
     
     
    ?>

    测试:

    <?php
    require 'image.class.php';
    $src = "001.jpg";
    $image = new Image($src);
    $image->percent = 0.2;
    $image->openImage();
    $image->thumpImage();
    $image->showImage();
    $image->saveImage(md5("aa123"));
     
     
    ?>

    结果:

    678ad1cf96701d3b40bbb530adfaf66.png

    更多PHP相关知识,请访问PHP教程

    以上就是PHP按一定比例压缩图片(保持清晰度)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP
    上一篇:PHP根据身份证号码,获取性别、获取生日、计算年龄等多个信息 下一篇:PHP使用Screw把源代码加密
    大前端线上培训班

    相关文章推荐

    • php安装amqp扩展(windows)• 怎么在自己的php页面中使用dedecms标签• PHP根据身份证号码,获取性别、获取生日、计算年龄等多个信息• TP5引用PHPExcel实现导入导出功能

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网