CI框架文件上传类及图像处理类用法分析


Posted in PHP onMay 18, 2016

本文实例讲述了CI框架文件上传类及图像处理类用法。分享给大家供大家参考,具体如下:

//列表页banner图片
public function edit_list_page_banner($category_id=""){
  $category_id= empty($category_id)?$_POST["category_id"]:$category_id;
  //上传图片
  if(isset($_POST["key"]) && $_POST["key"] == "upload"){
   /*
   1.set_upload_path
   */
   $config['upload_path']="./upload/source/".date("Y/m/d");//文件上传目录
   if(!file_exists("./upload/source/".date("Y/m/d"))){
    mkdir("./upload/source/".date("Y/m/d"),0777,true);//原图路径
   }
   if(!file_exists("./upload/big_thumb/".date("Y/m/d"))){
    mkdir("./upload/big_thumb/".date("Y/m/d"),0777,true);//大缩略图路径
   }
   if(!file_exists("./upload/small_thumb/".date("Y/m/d"))){
    mkdir("./upload/small_thumb/".date("Y/m/d"),0777,true);//小缩略图路径
   }
   $config['allowed_types']="gif|jpg|png|txt";//文件类型
   $config['max_size']="20000";//最大上传大小
   $this->load->library("upload",$config);
   if($this->upload->do_upload('userfile'))//表单中name="userfile"
   {
    //上传成功之后,生成两张缩略图
    $data=$this->upload->data();//返回上传图片的信息
    $this->load->library("image_lib");//载入图像处理类库
    //第一种方式:大缩略图的配置参数
    /*
    $config_big_thumb['image_library'] = 'gd2';//gd2图库
    $config_big_thumb['source_image'] = $data['full_path'];//原图
    $config_big_thumb['new_image'] = "./upload/big_thumb/".date("Y/m/d")."/".$data['file_name'];//大缩略图
    $config_big_thumb['create_thumb'] = true;//是否创建缩略图
    $config_big_thumb['maintain_ratio'] = true;
    $config_big_thumb['width'] = 300;//缩略图宽度
    $config_big_thumb['height'] = 300;//缩略图的高度
    $config_big_thumb['thumb_marker']="_300_300";//缩略图名字后加上 "_300_300",可以代表是一个300*300的缩略图
    */
    //第二种:大缩略图的配置参数
    /*
    $config_big_thumb=array(
     'image_library' => 'gd2',//gd2图库
     'source_image' => $data['full_path'],//原图
     'new_image' => "./upload/big_thumb/".date("Y/m/d")."/".$data['file_name'],//大缩略图
     'create_thumb' => true,//是否创建缩略图
     'maintain_ratio' => true,
     'width' => 300,//缩略图宽度
     'height' => 300,//缩略图的高度
     'thumb_marker'=>"_300_300"//缩略图名字后加上 "_300_300",可以代表是一个300*300的缩略图
    );
    */
    //第三种方式:将部分配置信息放到了config.php文件中
    $config_big_thumb=$this->config->item("config_big_thumb");
    $config_big_thumb['source_image']=$data['full_path'];
    $config_big_thumb['new_image']="./upload/big_thumb/".date("Y/m/d")."/".$data['file_name'];
    //小缩略图的配置参数
    /*
    $config_small_thumb['image_library'] = 'gd2';//gd2图库
    $config_small_thumb['source_image'] = $data['full_path'];//原图
    $config_small_thumb['new_image'] = "./upload/small_thumb/".date("Y/m/d")."/".$data['file_name'];//大缩略图
    $config_small_thumb['create_thumb'] = true;//是否创建缩略图
    $config_small_thumb['maintain_ratio'] = true;
    $config_small_thumb['width'] = 100;//缩略图宽度
    $config_small_thumb['height'] = 100;//缩略图的高度
    $config_small_thumb['thumb_marker']="_100_100";//缩略图名字后加上 "_100_100",可以代表是一个100*100的缩略图
    */
    //小缩略图的配置参数
    $config_small_thumb=array(
     'image_library' => 'gd2',//gd2图库
     'source_image' => $data['full_path'],//原图
     'new_image' => "./upload/small_thumb/".date("Y/m/d")."/".$data['file_name'],//大缩略图
     'create_thumb' => true,//是否创建缩略图
     'maintain_ratio' => true,
     'width' => 100,//缩略图宽度
     'height' => 100,//缩略图的高度
     'thumb_marker'=>"_100_100"//缩略图名字后加上 "_300_300",可以代表是一个300*300的缩略图
    );
    //$this->load->library("image_lib",$config_thumb);
    $this->image_lib->initialize($config_big_thumb);
    $this->image_lib->resize();//生成big缩略图
    $this->image_lib->initialize($config_small_thumb);
    $this->image_lib->resize();//生成small缩略图
    //插入数据库
    $data_array = array(
     'category_id' => $category_id,
     'pic_url' => "./upload/source/".date("Y/m/d")."/".$data['file_name'],
     'addtime' => time(),
     'is_stop' => 1,
     'sort'=>0,
     'gender' => $_POST["gender"],
     'link_url'=>$_POST["link_url"],
     'user_id' => intval($this->cur_user ['user_id'])
    );
    $this->category_model->add_category_banner($data_array);
   }
  }
  $con_arr[] = " category_id= '{$category_id}'";
  if ($gender=='' ) {
   $gender=0;
  }
  $con_arr[] = " gender= '{$gender}'";
  $condition = implode( ' and ', $con_arr);
  $banner_list = $this->category_model->get_banner_all($condition);
  $this->tp->assign('banner_list', $banner_list);
  $this->tp->assign('base_url', base_url());
  $this->tp->assign('gender', $gender);
  $this->tp->assign('category_id', $category_id);
  $this->tp->display("category/edit_list_page_banner.php");
}

config.php文件中有关缩略图的配置项:

//大缩略图的配置参数
$config_big_thumb=array(
 'image_library' => 'gd2',//gd2图库
 'create_thumb' => true,//是否创建缩略图
 'maintain_ratio' => true,
 'width' => 300,//缩略图宽度
 'height' => 300,//缩略图的高度
 'thumb_marker'=>"_300_300"//缩略图名字后加上 "_300_300",可以代表是一个300*300的缩略图
);

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
最简单的PHP程序--记数器
Oct 09 PHP
PHP 第一节 php简介
Apr 28 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
浅析iis7.5安装配置php环境
May 10 PHP
CodeIgniter常用知识点小结
May 26 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
php实例化一个类的具体方法
Sep 19 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
CI框架实现cookie登陆的方法详解
May 18 #PHP
浅析php静态方法与非静态方法的用法区别
May 17 #PHP
php关闭warning问题的解决方法
May 17 #PHP
XHProf报告字段含义的解析
May 17 #PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 #PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 #PHP
简单理解PHP的面向对象编程方式
May 17 #PHP
You might like
smarty半小时快速上手入门教程
2014/10/27 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
手机端转换rem适应
2017/04/01 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Apache部署Django项目图文详解
2019/07/30 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
python银行系统实现源码
2019/10/25 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
python如何求100以内的素数
2020/05/27 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
python suds访问webservice服务实现
2020/06/26 Python
学习Python需要哪些工具
2020/09/04 Python
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
小学生家长评语集锦
2014/01/30 职场文书
班长自荐书范文
2014/02/11 职场文书
十八大宣传标语
2014/10/09 职场文书
稽核岗位职责
2015/02/10 职场文书
道歉信范文
2015/05/12 职场文书
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js