zoukankan      html  css  js  c++  java
  • php批量压缩指定目录的图片,优点-比工具快好多陪。

    访问路径或者api接口调用
    public function index(){
            $dir = 'uploads';//指定本地目录
            $namefis = [];
            $username = my_dir($dir);//遍历后目录结果,这是一个多维数组
            foreach ($username as $k => $v) {
                foreach ($v as $k1 => $v1) {
                        $namefis[] = 'uploads/' . $k . '/' . $v1;
    //                    compressedImage('uploads/' . $k . '/' . $v1, 'uploads/' . $k . '/' . $v1,60);
                }
            }
            dump($namefis);//查看输出的是不是图片路径。是的话,compressedImage,方法。压缩到60的质量,压缩之前,记得备份下,不然压缩的太狠,就没原图了。
    //        return $this->fetch();
        }
    
    dump 结果查看uploads目录
    
    
    
    ![](https://img2020.cnblogs.com/blog/735218/202009/735218-20200925000520152-1535406742.png)
    
    两个经典函数
    function my_dir($dir) {
        $files = array();
        if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:)
            while(($file = readdir($handle)) !== false) {
                if($file != ".." && $file != ".") { //排除根目录;
                    if(is_dir($dir."/".$file)) { //如果是子文件夹,就进行递归
                        $files[$file] = my_dir($dir."/".$file);
                    } else { //不然就将文件的名字存入数组;
                        $files[] = $file;
                    }
    
                }
            }
            closedir($handle);
            return $files;
        }
    }
    
    function compressedImage($imgsrc, $imgdst,$per=60)
    {
        list($width, $height, $type) = getimagesize($imgsrc);
        $new_width = $width;//压缩后的图片宽
        $new_height = $height;//压缩后的图片高
        switch ($type) {
            case 1:
                $giftype = check_gifcartoon($imgsrc);
                if ($giftype) {
                    header('Content-Type:image/gif');
                    $image_wp = imagecreatetruecolor($new_width, $new_height);
                    $image = imagecreatefromgif($imgsrc);
                    imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);           //90代表的是质量、压缩图片容量大小
                    imagejpeg($image_wp,$imgdst,$per);
                    imagedestroy($image_wp);
                    imagedestroy($image);
                }
                break;
            case 2:
                header('Content-Type:image/jpeg');
                $image_wp = imagecreatetruecolor($new_width, $new_height);
                $image = imagecreatefromjpeg($imgsrc);
                imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);         //90代表的是质量、压缩图片容量大小
                imagejpeg($image_wp, $imgdst, $per);
                imagedestroy($image_wp);
                imagedestroy($image);
                break;
            case 3:
                header('Content-Type:image/png');
                $image_wp = imagecreatetruecolor($new_width, $new_height);
                $image = imagecreatefrompng($imgsrc);
                imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);         //90代表的是质量、压缩图片容量大小
                imagejpeg($image_wp, $imgdst, $per);
                imagedestroy($image_wp);
                imagedestroy($image);
                break;
        }
    }
  • 相关阅读:
    转物理老师的说说,过好自己的生活,别人的梦幻生活背后也有你看不见的无奈
    第一、二、三、BC范式的学习总结
    一位毕业四年的前辈的经历
    普里姆算法,克鲁斯卡尔算法,迪杰斯特拉算法,弗洛里德算法
    从零开始构建JavaScript框架4——DOM遍历2
    从零开始构建JavaScript框架3——DOM遍历1
    从零开始构建JavaScript框架2——总体结构以及元素的获取和创建
    从零开始构建JavaScript框架1——为何JavaScript开发需要框架
    从浏览器输入URL到页面加载完成到底发生了什么?
    第5课 C语言指针深入1
  • 原文地址:https://www.cnblogs.com/dongmodify/p/13727494.html
Copyright © 2011-2022 走看看