在codeginiter中调整图像大小

时间:2018-03-10 16:25:10

标签: php codeigniter image-manipulation

目前我正在使用codeigniter框架,但我对如何调整图片大小感到困惑。我遵循了文档,但我仍然感到困惑。这是我的代码

public function create(){
        //Check login
        if(!$this->session->userdata('logged_in')){
            redirect('users/login');
        }

        $data['title'] = 'Create Post';

        $data['categories'] = $this->BlogModel->get_categories();

        $this->form_validation->set_rules('title','title','required');
        $this->form_validation->set_rules('content','content','required');

        if($this->form_validation->run() === FALSE){
            $this->load->view('frontend/header');
            $this->load->view('frontend/navbar');
            $this->load->view('frontend/blog/create',$data);
            $this->load->view('frontend/footer');   
        } else{

            //Upload Image
            $config['upload_path'] = './assets/images/posts/blog';
            $config['allowed_types'] = 'gif|jpg|png';
            $config['max_size'] = '2048';
            $config['max_width'] = '0';
            $config['max_height'] = '0';

            $this->load->library('upload', $config);

            if(!$this->upload->do_upload()){
                $errors = array('error' => $this->upload->display_errors());
                $post_image = 'noimage.jpg';
            }else{
                $data = array('upload_data' => $this->upload->data());
                $post_image = $_FILES['userfile']['name'];
            }

            $this->BlogModel->create_post($post_image);

            //set message
            $this->session->set_flashdata('post_created','Your post has been created');

            redirect('blog');
        }
    }

请告知如何调整图片大小。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想要执行其他操作,例如直接调整原始图像的大小,而不是将缩略图集create_thumb设置为false,并且不要使用new_imagecreate_thumbnew_image之间的唯一区别是new_image允许您指定自己的路径和名称。尽管使用create_thumb可以做的最多的事情是更改thumb_marker。这都在docs ......

    //Upload Image
    $config['upload_path'] = './assets/images/posts/blog';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '2048';
    $config['max_width'] = '0';
    $config['max_height'] = '0';

    $this->load->library('upload', $config);

    if (!$this->upload->do_upload()) {
        //$errors = array('error' => $this->upload->display_errors());
        exit($this->upload->display_errors());
        $post_image = 'noimage.jpg';
    } else {
        $up_data = $this->upload->data();
        $post_image = $up_data['name'];

        $config = array(); // clear prev config

        $config['image_library'] = 'gd2';
        $config['source_image'] = $up_data['full_path'];
        $config['create_thumb'] = TRUE;
        $config['thumb_marker'] = '_thumbnail';
        $config['maintain_ratio'] = TRUE;
        $config['width'] = 75;
        $config['height'] = 50;

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

        if(!$this->image_lib->resize()) {
            exit($this->image_lib->display_errors());
        }

        $thumb_path = $up_data['file_path'] . $up_data['raw_name'] . $config['thumb_marker'] . $up_data['file_ext'];
    }

您可以稍后删除的退出,但留下它们进行调试,直到您找到正确发送错误消息的方法(我建议会话变量)。这些功能也应该移到模型中。