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实现ping
Oct 09 PHP
PHP的面向对象编程
Oct 09 PHP
PHP数组及条件,循环语句学习
Nov 11 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
php中时间函数date及常用的时间计算
May 12 PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 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
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
python类装饰器用法实例
2015/06/04 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
python删除不需要的python文件方法
2018/04/24 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
公务员职务工作的自我评价
2013/11/01 职场文书
女大学生自我鉴定
2013/12/09 职场文书
集体备课反思
2014/02/12 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
年会邀请函范文
2015/01/30 职场文书