zoukankan      html  css  js  c++  java
  • CI框架重新生成图片(递归文件)

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    set_time_limit(0);
    
    class Img_build  extends CI_Controller{
       
        private  static $img_path =    'upload_old/';    
        private  static $new_path =    'upload/';
    
    
        function __construct()
        {
                parent::__construct();
        }
        
        /**
         * 获取需要读取的路径的信息
         * $map =  array (
         *                  '路径名' => array (文件1, 文件2, 文件3)         
         *         )
         */
        public function index()
        {
            $this->load->helper('directory');
            //读取路径的信息
            $map = directory_map(self::$img_path, FALSE, TRUE);            
    
            echo "<pre>";
            print_r($map);
            echo "</pre>";
            
            if(!empty($map) &&  is_array($map))
            {
                $this->build_path($map);
            }
    
            
        }
    
    
        /**
         * 递归生成相应的路径
         * @param array $map
         */
        private function build_path($map = array())
        { 
            if(!file_exists(self::$new_path))
            {
                mkdir(self::$new_path, 0777);
            }
    
    
            foreach($map as $key => $val)
            {
               $old_img_path = self::$img_path;
               $old_tmp_path = self::$img_path.$key.'/';
    
               $new_img_path = self::$new_path;
               $new_tmp_path = self::$new_path.$key.'/';
               
               
                if(is_dir($old_tmp_path))
                {
                    //echo $new_tmp_path;
                    if(!file_exists($new_tmp_path))
                    {
                        mkdir($new_tmp_path, 0777);
                    }
    
                    self::$img_path = $old_tmp_path;
                    self::$new_path = $new_tmp_path;
                    
                    echo 'path:'.self::$img_path."<hr>";
    
                    $this->load->helper('directory');
                    $c_map = directory_map($old_tmp_path, FALSE, TRUE);
    
    
    //                     echo "<pre>";
    //                     print_r($c_map);
    //                     echo "</pre>";                   
    
                    if(!empty($c_map)  &&  is_array($c_map))
                    {
                        $this->build_path($c_map);
                    }
                    
                }
    
                if(is_file(self::$img_path.$val))
                {
                    echo 'file:'.self::$img_path.$val."<hr>";
                    
                    $img = array();
                    $img['source_image'] = self::$img_path.$val;
                    $img['new_image']    = self::$new_path.$val;
                    $this->build_img($img);
                }
    
                self::$img_path = $old_img_path;
                self::$new_path = $new_img_path;
    
            }
        }
    
        /**
         * 根据原图片生成新的图片
         * @param array $img
         * $img = array('source_image'=> '原图片的路径', 'new_image' => '新图片路径')
         */
        private function build_img($img = array())
        {    
            if(!is_array($img) || empty($img))
            {
                return FALSE;
            }
    
            //设置图像生成参数
            $config['image_library']    = 'gd2';   //设置图像库
            $config['source_image']     = $img['source_image'];  //设置原始图像的名字/路径
            $config['create_thumb']     = FALSE;   //让图像处理函数产生一个预览图像
            $config['maintain_ratio']   = TRUE;  //指定是否在缩放或使用硬值的时候使图像保持原始的纵横比例
            //$config['quality']          = 200; 
            $img_info = array();
            $img_info = getimagesize($config['source_image']);//获取图片的尺寸
    
            if(is_array($img_info) && !empty($img_info))
            {
                $config['width']            = $img_info[0];
                $config['height']           = $img_info[1];      
            }
    
            $config['new_image']        = $img['new_image']; //新图片路径            
    
            $this->load->library('image_lib', $config);  //加载图片处理类 
            $this->image_lib->initialize($config);  //调用            
    
            if ( ! $this->image_lib->resize())
            {
                echo $this->image_lib->display_errors();               
            }        
    
            $this->image_lib->clear();  //清除图片处理参数
    
    
        }
    }
    
    ?>
  • 相关阅读:
    π框架参数规则(正则表达式验证)
    SQL查询优化的一些建议
    phalApi框架打印SQL语句
    phpstorm注册码
    phalApi数据库操作
    内容的全局搜索
    xampp虚拟主机的配置
    navicat自动备份数据
    IOC和AOP扩展
    Spring AOP
  • 原文地址:https://www.cnblogs.com/whoamme/p/2663222.html
Copyright © 2011-2022 走看看