无法在CodeIgniter中调整图像大小

时间:2011-02-16 09:14:34

标签: php image codeigniter upload resize

我刚开始编程一两周前,所以我为潜在的可怕代码道歉,但我一直很难搞清楚这一点。
我设法将文件上传到指定目的地,但我无法使调整大小/图像处理工具正常工作。

给我问题的代码是注释掉的部分,我已经确保为文件夹提供适当的权限。任何帮助都会很出色。

我也很好奇我将如何使用绝对路径:

function avatar_update() {
    $config['upload_path'] = './avatars/';
    $config['allowed_types'] = 'jpg';
    $config['max_size'] = '100';
    $config['max_width'] = '100';
    $config['max_height'] = '100';
    $config['file_name'] = time();

    $filename = $config['file_name'];

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

    if (!$this->upload->do_upload()) {
        $error = $this->upload->display_errors();
        $this->session->set_flashdata('msg', $error);
        $this->load->view('General/header');
        $this->load->view('profile_view', $error);
        $this->load->view('General/footer');

    } else {
        // $this->load->library('image_lib');

        // $resize['image_library'] = 'gd2';
        // $resize['source_image'] = './avatars/'.$filename.'.jpg';
        // $resize['maintain_ratio'] = TRUE;
        // $resize['create_thumb'] =TRUE;
        // $resize['width'] = 50;
        // $resize['height'] = 50;

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

        // $this->image_lib->resize();

        $username = $this->session->userdata('username');
        $avatar = array(
            'avatar' => $filename
        );

        $this->db->where('username', $username);
        $this->db->update('users', $avatar);

        $this->db->select();
        $this->db->where('username', $username);
        $query = $this->db->get('users');

        if ($query->num_rows() > 0) {
            $user_details = $query->row_array();

        }

        $this->session->set_userdata($user_details);

        $this->load->view('General/header');
        $this->load->view('profile_view');
        $this->load->view('General/footer');
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码对我来说没问题(除了加载图像库两次!)。尝试将新图像的路径添加到配置数组中。

$resize['new_image'] = '/path/to/new_image.jpg';

你不应该需要它,但它可能值得一试! 另外,根据我的评论,你应该在条件中包装resize()函数,这样你就可以测试并回显任何错误。

PS。当您更习惯CI时,MVC模型会考虑将所有数据库逻辑移动到模型中。