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"));
  • 相关阅读:
    MySQL(数据库)
    移动端兼容
    Vue常用指令
    JS浮点运算精度问题
    ES11新增的9个新特性
    后端要采用ArrayBuffer上传文件
    重磅来袭 Vue 3.0 One Piece 正式发布
    Vue 事件的高级使用方法
    浏览器的回流与重绘(Reflow&Repaint)
    微前端介绍
  • 原文地址:https://www.cnblogs.com/wt645631686/p/8504359.html
Copyright © 2011-2022 走看看