当前位置:首页 > PHP教程 > php高级应用 > 列表

CI框架实现递归生成文件路径并重新生成图片功能

发布:smiling 来源: PHP粉丝网  添加日期:2018-11-15 09:42:33 浏览: 评论:0 

本文实例讲述了CI框架实现递归生成文件路径并重新生成图片功能。分享给大家供大家参考,具体如下:

  1. <!--?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 
  2. set_time_limit(0); 
  3. class Img_build extends CI_Controller{ 
  4.   private static $img_path =  'upload_old/'
  5.   private static $new_path =  'upload/'
  6.   function __construct() 
  7.   { 
  8.       parent::__construct(); 
  9.   } 
  10.   /** 
  11.    * 获取需要读取的路径的信息 
  12.    * $map = array ( 
  13.    *         '路径名' =--> array (文件1, 文件2, 文件3) 
  14.    *     ) 
  15.    */ 
  16.   public function index() 
  17.   { 
  18.     $this->load->helper('directory'); 
  19.     //读取路径的信息 
  20.     $map = directory_map(self::$img_path, FALSE, TRUE); 
  21.     echo "<pre>"
  22.     print_r($map); 
  23.     echo "</pre>"
  24.     if(!emptyempty($map) && is_array($map)) 
  25.     { 
  26.       $this->build_path($map); 
  27.     } 
  28.   } 
  29.   /** 
  30.    * 递归生成相应的路径 
  31.    * @param array $map 
  32.    */ 
  33.   private function build_path($map = array()) 
  34.   {  
  35.     if(!file_exists(self::$new_path)) 
  36.     { 
  37.       mkdir(self::$new_path, 0777); 
  38.     } 
  39.     foreach($map as $key => $val
  40.     { 
  41.       $old_img_path = self::$img_path
  42.       $old_tmp_path = self::$img_path.$key.'/'
  43.       $new_img_path = self::$new_path
  44.       $new_tmp_path = self::$new_path.$key.'/'
  45.       if(is_dir($old_tmp_path)) 
  46.       { 
  47.         //echo $new_tmp_path; 
  48.         if(!file_exists($new_tmp_path)) 
  49.         { 
  50.           mkdir($new_tmp_path, 0777); 
  51.         } 
  52.         self::$img_path = $old_tmp_path
  53.         self::$new_path = $new_tmp_path
  54.         echo 'path:'.self::$img_path."<hr>"
  55.         $this->load->helper('directory'); 
  56.         $c_map = directory_map($old_tmp_path, FALSE, TRUE); 
  57. //           echo "<pre>"; 
  58. //           print_r($c_map); 
  59. //           echo "</pre>"; 
  60.         if(!emptyempty($c_map) && is_array($c_map)) 
  61.         { 
  62.           $this->build_path($c_map); 
  63.         } 
  64.       } 
  65.       if(is_file(self::$img_path.$val)) 
  66.       { 
  67.         echo 'file:'.self::$img_path.$val."<hr>"
  68.         $img = array(); 
  69.         $img['source_image'] = self::$img_path.$val
  70.         $img['new_image']  = self::$new_path.$val
  71.         $this->build_img($img); 
  72.       } 
  73.       self::$img_path = $old_img_path
  74.       self::$new_path = $new_img_path
  75.     } 
  76.   } 
  77.   /** 
  78.    * 根据原图片生成新的图片 
  79.    * @param array $img 
  80.    * $img = array('source_image'=> '原图片的路径', 'new_image' => '新图片路径') 
  81.    */ 
  82.   private function build_img($img = array()) 
  83.   {   
  84.     if(!is_array($img) || emptyempty($img)) 
  85.     { 
  86.       return FALSE; 
  87.     } 
  88.     //设置图像生成参数 
  89.     $config['image_library']  = 'gd2';  //设置图像库 
  90.     $config['source_image']   = $img['source_image']; //设置原始图像的名字/路径 
  91.     $config['create_thumb']   = FALSE;  //让图像处理函数产生一个预览图像 
  92.     $config['maintain_ratio']  = TRUE; //指定是否在缩放或使用硬值的时候使图像保持原始的纵横比例 
  93.     //$config['quality']     = 200; 
  94.     $img_info = array(); 
  95.     $img_info = getimagesize($config['source_image']);//获取图片的尺寸 
  96.     if(is_array($img_info) && !emptyempty($img_info)) 
  97.     { 
  98.       $config['width']      = $img_info[0]; 
  99.       $config['height']      = $img_info[1]; 
  100.     } 
  101.     $config['new_image']    = $img['new_image']; //新图片路径 
  102.     $this->load->library('image_lib'$config); //加载图片处理类 
  103.     $this->image_lib->initialize($config); //调用 
  104.     if ( ! $this->image_lib->resize()) 
  105.     { 
  106.       echo $this->image_lib->display_errors(); 
  107.     }//phpfensi.com 
  108.     $this->image_lib->clear(); //清除图片处理参数 
  109.   } 
  110. ?> 

 

Tags: CI框架 递归生成文件

分享到:

相关文章