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

[已解决] CI图像处理类!求生成一大一小两张缩略图的做法

[复制链接]
发表于 2010-9-14 16:48:59 | 显示全部楼层 |阅读模式
运行后也提示了小图缩略成功,但其实没成功! 代码如下,请指教
PHP复制代码
function do_upload()
    {
 
        $today = date('Ymd');
        $newday = './uploads/'.$today;
        if(!file_exists($newday)){
            mkdir($newday,0777);
        }
        $newname = time();
 
        $config['upload_path']=$newday;
        $config['file_name'] = $newname.'.jpg';
        $config['allowed_types'] = 'jpg|jpeg';
        $config['max_size'] = '1000';
        $config['max_width'] = '5000';
        $config['max_height'] = '5000';  
 
        $this->load->library('upload', $config);
 
 
        if(!$this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('upload_form', $error);
        }
        else
        {
            echo $newday.$newname;
            $config['image_library'] = 'gd2';
            $config['source_image'] = $newday.'/'.$newname.'.jpg';
            $config['create_thumb'] = TRUE;
            $config['maintain_ratio'] = TRUE;
            $config['width'] = 320;
            $config['height'] = 320;
 
            $this->load->library('image_lib', $config);
 
            if(!$this->image_lib->resize()){
                echo $this->image_lib->display_errors('<p>','<p>');
            }else{
                echo "照片大缩略成功!";
                $config2['image_library'] = 'gd2';
                $config2['source_image'] = $newday.'/'.$newname.'.jpg';
                $config2['create_thumb'] = TRUE;
                $config2['maintain_ratio'] = TRUE;
                $config2['width'] =100;
                $config2['height'] = 120;
 
                $this->load->library('image_lib', $config2);
 
                if(!$this->image_lib->resize()){
                    echo $this->image_lib->display_errors('<p>','<p>');
                }else{
                    echo '小照片缩略成功!';
 
                    $uid = $this->session->userdata('uid');
                    $spname = $newday.'/'.$newname.'_thumb'.'.jpg';
                    $this->load->model('M_user');
                    $rs=$this->M_user->photo_insert($uid,1,$spname,1,1,123456,1);
                    if($rs){
                        $data = array('upload_data' => $this->upload->data());
                        $this->load->view('upload_success', $data);
                        //redirect('LoginC/upload_success2');
                    }else{
                        echo '上传失败!';
                    }
 
                }
 
 
            }
 
 
 
        }
    }
 
 
 
复制代码
发表于 2010-9-14 17:23:25 | 显示全部楼层
发表于 2010-9-14 19:36:17 | 显示全部楼层
本帖最后由 kis 于 2010-9-14 19:56 编辑

Hex 的回答完全正确.
我还是啰嗦一下;
------------------------------------------------------------
$this->load->library('image_lib', $config2);
应该修改成
$this->image_lib->initialize($config2);

因为:CI 的 loader->library() 里的 _ci_load_class 方法会判断是否已加载image_lib,所以 $this->load->library('image_lib', $config2);会中途 中断执行
$config2 没有被初始化。
附:
image_lib 的构造函数的代码如下:
PHP复制代码
function CI_Image_lib($props = array())
        {
                if (count($props) > 0)
                {
                        $this->initialize($props);
                }
 
                log_message('debug', "Image Lib Class Initialized");
        }
复制代码
 楼主| 发表于 2010-9-14 21:19:24 | 显示全部楼层
谢谢上面的兄台.
我按hex的改了,但现在只生成小缩略图了,大缩略图还是没有
发表于 2010-9-14 22:37:37 | 显示全部楼层
加上
PHP复制代码
$config['new_image'] = '文件系统路径';
复制代码

本版积分规则