ホームページ  >  記事  >  バックエンド開発  >  再帰的にファイルパスを生成し画像を再生成するCIフレームワークの機能の紹介

再帰的にファイルパスを生成し画像を再生成するCIフレームワークの機能の紹介

不言
不言オリジナル
2018-06-29 10:18:282248ブラウズ

この記事では主に、ファイル パスの再帰生成と画像の再生成の機能を実装する CI フレームワークを紹介します。これには、ファイル ディレクトリの再帰を実装するための CodeIgniter フレームワークのカスタム イメージ コントローラー クラスと、画像生成関連の操作スキルを実行するための画像処理拡張クラスの呼び出しが含まれます。は必須です。友人は参照できます。

この記事の例では、ファイル パスを再帰的に生成し、イメージを再生成する CI フレームワークの機能について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。

<?php if ( ! defined(&#39;BASEPATH&#39;)) exit(&#39;No direct script access allowed&#39;);
set_time_limit(0);
class Img_build extends CI_Controller{
  private static $img_path =  &#39;upload_old/&#39;;
  private static $new_path =  &#39;upload/&#39;;
  function __construct()
  {
      parent::__construct();
  }
  /**
   * 获取需要读取的路径的信息
   * $map = array (
   *         &#39;路径名&#39; => array (文件1, 文件2, 文件3)
   *     )
   */
  public function index()
  {
    $this->load->helper(&#39;directory&#39;);
    //读取路径的信息
    $map = directory_map(self::$img_path, FALSE, TRUE);
    echo "<pre class="brush:php;toolbar:false">";
    print_r($map);
    echo "
"; 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."
"; $this->load->helper('directory'); $c_map = directory_map($old_tmp_path, FALSE, TRUE); // echo "
";
//           print_r($c_map);
//           echo "
"; 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."
"; $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(); //清除图片处理参数 } } ?>

上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

CI フレームワークを使用してファイルのアップロードを最適化し、複数のファイルをアップロードする方法

CI フレームワークについてレベル分類と再帰の無制限の実装

#

以上が再帰的にファイルパスを生成し画像を再生成するCIフレームワークの機能の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。