用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3057|回复: 5
收起左侧

[已解决] 上传图片

[复制链接]
发表于 2010-8-24 10:34:19 | 显示全部楼层 |阅读模式
<?php

//详细代码以下,在upload_img() 调用$this->create_thumbnail();  和$this->img_resize();  时后者的会失效,两个函数的前后那个函数调用失效啊,都是后边哪个函数可以调用,不知道原因,昐各位高手指点,多谢。

class Upload extends Controller {

function Upload()
{
     parent::Controller();
         $this->load->library('image_lib');
     $this->load->helper(array('form', 'url'));
}

function index()
{
     $this->load->view('upload_form', array('error' => ' ' ));
}
function do_upload()
{

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '2048';
$config['max_width'] = '0';
$config['max_height'] = '0';
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if(!$this->upload->do_upload()){
echo $this->upload->display_errors();
}else {
$file_info = $this->upload->data();
$this->create_thumbnail($file_info['file_name'],$file_info['image_width'],$file_info['image_height']);
$this->img_resize($file_info['file_name'],$file_info['image_width'],$file_info['image_height']);
$data_img['goods_image'] = $file_info['file_name'];
$data_img['thumb_image'] = 'thumb/'.$file_info['raw_name'] . '_thumb' . $file_info['file_ext'];
//  return $data_img;
//print_r($data_img);
$this->load->view('upload_success', $data_img);
}
}
//缩略图         
private function create_thumbnail($file_name,$image_width,$image_height) {
$set_thumb_width = 100;
$set_thumb_height = 75;
$config['image_library'] = 'gd2';
$config['source_image'] ='./uploads/' . $file_name;
$config['new_image'] = './uploads/thumb/' . $file_name;                    //没有生产缩略图
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
if($image_width > $set_thumb_width or $image_height > $set_thumb_height){
$config['width'] = $set_thumb_width;
$config['height'] = $set_thumb_height;
}

$this->load->library('image_lib', $config);                     ////////加载

if(!$this->image_lib->resize()){

echo $this->image_lib->display_errors();
}
unset($config);

$this->image_lib->clear();
}
//调整图像大小
function img_resize($file_name,$image_width,$image_height) {
$set_width = 200;
$set_height = 200;
$config['image_library'] = 'gd2';
$config['source_image'] = './uploads/' . $file_name;
$config['new_image'] = './uploads/image/' . $file_name;
$config['create_thumb'] = FALSE;
$config['maintain_ratio'] = TRUE;
if($image_width > $set_width or $image_height > $set_height){
$config['width'] = $set_width;
$config['height'] = $set_height;
}

//$this->load->library('image_lib', $config);
$this->image_lib->initialize($config);                                     ////////加载
if(!$this->image_lib->resize()){
echo $this->image_lib->display_errors();
}
unset($config);
$this->image_lib->clear();
}
}

没有报错误,在指定文件夹里面没有生产缩略图。什么原因呢?
发表于 2010-8-24 10:43:24 | 显示全部楼层
第二次要用->image_lib->initialize($config)配置
 楼主| 发表于 2010-8-26 14:16:12 | 显示全部楼层
回复 2# visvoy


   

我第二次 就是用哪个image_lib->initialize($config)配置。
 楼主| 发表于 2010-8-26 14:19:29 | 显示全部楼层
回复 2# visvoy


/ /调整图像大小
这个是不是第二次调用呢? 您在帮我看看啊。谢谢啊!
发表于 2010-8-26 14:33:59 | 显示全部楼层
->load->library只有效一次,你debug看有没有多次使用->load->lib的情况
 楼主| 发表于 2010-9-7 11:39:42 | 显示全部楼层
上传图片判断是否为空
function add_goods() {
        $config['upload_path'] = './public/data/goods_images/full/';
        $config['allowed_types'] = 'jpg|png';
        $config['max_size'] = '300';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';
        $config['encrypt_name']='TRUE';
        $this->load->library('upload', $config);
if(array_key_exists ( 'pic' , $_POST ) && isset($_POST['pic'])){                     //判断上传图片是否为空
       if (!$this->upload->do_upload('pic')) {
         $this->admin_model->info(4,'抱歉,图片上传失败。可能您选择的图片大小超出了限制。请返回重新上传。','back');
                 //echo $this->upload->display_errors();
        }else {
            $data = array('upload_data' => $this->upload->data());  //上传文件信息
            $imgname=$data['upload_data']['file_name'];            //上传后的文件名(包括扩展名);
            $this->load->library('image_lib');
            $config['image_library'] = 'GD2';
            $config['source_image'] = "public/data/goods_images/full/{$imgname}";
            $config['new_image'] = "public/data/goods_images/thumb/{$imgname}";
            $config['width'] = 100;
            $config['height'] = 100;
            $config['quality']='90%';
            $this->image_lib->initialize($config);
            $this->image_lib->resize(); //生成缩略图
            $goods_data['pic']='full/'.$imgname; //新闻完整图片路径
            $goods_data['shortpic']='thumb/'.$imgname;//新闻缩略图路径
                  }
}else {
           $goods_data['pic']=''; //新闻完整图片路径
            $goods_data['shortpic']='';//新闻缩略图路径
}
            $goods_data['name']=$_POST['name'];//名称
            $goods_data['pen_name']=$_POST['pen_name'];//别名称
            $goods_data['type_id']=$_POST['type_id'];//频道类型
            $goods_data['outtime']=$_POST['outtime'];//发表时间
            $goods_data['out_name']=$_POST['out_name'];//作者
            $goods_data['level']=$_POST['level'];//排序
            $goods_data['root_in']=$_POST['root_in'];//来源
            $goods_data['tag']=$_POST['tag'];//tag
            $goods_data['short_desc']=$_POST['short_desc'];//概要简介
            $goods_data['contents']=$_POST['content'];//详细简介
            $goods_data['out_new']=$_POST['out_new'];//外连接
            $goods_data['created_at']=date('Ymd His');//添加时间
            $goods_data['update_at']=date('Ymd His');//修改时间

            if($this->admin_model->add('news',$goods_data)>0) { //如果插入数据成功
                $this->admin_model->info(2,'您已经成功地添加了。',site_url().'admin/goods/');
            }
            else {
                $this->admin_model->info(4,'抱歉,无法添加商品。','back');
            }
    }


谢谢朋友帮助!

本版积分规则