刀客孩哥 发表于 2010-9-14 16:48:59

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

运行后也提示了小图缩略成功,但其实没成功! 代码如下,请指教
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 '上传失败!';
                  }

                }


            }



      }
    }


Hex 发表于 2010-9-14 17:23:25

看 http://codeigniter.org.cn/forums/thread-4518-1-1.html

kis 发表于 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 的构造函数的代码如下:
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的改了,但现在只生成小缩略图了,大缩略图还是没有

Hex 发表于 2010-9-14 22:37:37

加上
$config['new_image'] = '文件系统路径';
页: [1]
查看完整版本: CI图像处理类!求生成一大一小两张缩略图的做法