zoukankan      html  css  js  c++  java
  • PHP图片压缩处理类

    <?php
    namespace base;
    
    /**
     * 图片压缩类
     *
     * Class Image
     */
    
    class Images2
    {
    
        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);
    
        }
    
        /**
         * 保存图片
         * @param $name
         */
        public function saveImage($name)
        {
    
            $funcs = "image" . $this->imageinfo['type'];
    
            $funcs($this->image, $name . '.' . $this->imageinfo['type']);
    
        }
    
        /**
         * 销毁图片
         */
        public function __destruct()
        {
    
            imagedestroy($this->image);
    
        }
    
    }
    
    
    ?>

    调用方法:

    $image = new Images2($upload_res['data']['path']);
               $image->percent = 0.2;
    
               $image->openImage();
    
               $image->thumpImage();
    
               $image->showImage();
    
               $image->saveImage(md5("asd1123456789"));
  • 相关阅读:
    【STL】各容器成员对比表
    C/C++ 笔试、面试题目大汇总2
    运维
    Docker_基础运用
    IntelliJ_idea_Ultimate_2018.1_windows
    python_IED工具下载(pycharm)_windows版
    排序_归并排序_递归
    递归_汉诺塔问题
    递归_变位字
    递归_三角数字和阶乘
  • 原文地址:https://www.cnblogs.com/wt645631686/p/8504359.html
Copyright © 2011-2022 走看看