尝试在函数中调整图像大小两次,并且只调整一次

时间:2011-11-11 03:06:39

标签: php codeigniter image-processing

我正在尝试让用户上传文件,然后我的功能会将该照片的大小调整为800x600,然后将该文件的大小调整为165x165。使用我的代码,它只是将其调整为165x165,但如果我评论该部分,它会将其调整为800x600。

我可以做些什么来调整它们的大小?

   /**
    * addPhoto - function which shows the add photo page
    */
    function addPhoto($album)
    {   
        $album = rawurldecode($album);

        ini_set('upload_max_filesize', '4M');  
        ini_set('post_max_size', '12M');  
        ini_set('max_input_time', 300);  
        ini_set('max_execution_time', 300); 

        $config['upload_path'] = './assets/images/photoAlbums/'.$album.'/';
        $config['allowed_types'] = 'jpg|jpeg|pjpeg';
        $config['max_size'] = '4096';   // that's 4MBs
        $config['max_width'] = '4000';
        $config['max_height'] = '3000';
        $config['remove_space'] = TRUE;
        $config['overwrite'] = TRUE;

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

        if(!$this->upload->do_upload('userFile')) { // if there are errors uploading the file...
            $content_data['error'] = array('error' => $this->upload->display_errors());


        } else {    // else there are NO errors, we need to resize it, and ditch that huge ass original


        $image = $this->upload->data(); 
        $uploadedFile = $image['file_name'];

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

        $thumbConfig['image_library'] = 'gd2';
            $thumbConfig['source_image'] = $image['full_path']; 
        $thumbConfig['create_thumb'] = FALSE;
        $thumbConfig['maintain_ratio'] = TRUE;
        $thumbConfig['width'] = 800;
        $thumbConfig['height'] = 600;

        $this->image_lib->initialize($thumbConfig);

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

        $this->image_lib->clear();

        $thumbConfig['image_library'] = 'gd2';
        $thumbConfig['source_image'] = $image['full_path'];
        $thumbConfig['create_thumb'] = TRUE;
        $thumbConfig['maintain_ratio'] = FALSE;
        $thumbConfig['width'] = 165;
        $thumbConfig['height'] = 165;

        $this->image_lib->initialize($thumbConfig);

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

        $content_data['firstName'] = $this->session->userdata('firstName');
        $data['sess'] = $this->session;
        $data['content'] = $this->load->view('member/addPhoto_success', $content_data, true);
        $this->load->view('template/admin', $data);
        }
    }

4 个答案:

答案 0 :(得分:1)

第二次运行image_lib时,您将要通过指定要创建的新文件来避免覆盖该文件: 后:

$thumbConfig['height'] = 165;

添加:

$thumbConfig['new_image'] = $image['file_path'] . "thumb_" . $image['file_name'];

所以如果您调整大小的800 x 600图像位于/my/upload/path/foo.jpg, 这将在/my/upload/path/thumb_foo.jpg创建一个拇指。

答案 1 :(得分:1)

如果要创建两个新的已调整大小的图像并保持原始图像完整,则需要添加

$config['create_thumb'] = TRUE;

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

到第一部分。

根据您的代码,您将使用800x600版本覆盖原始文件,然后创建165x165缩略图。

答案 2 :(得分:0)

我认为你在第一次调整时错过了这一行:

$thumbConfig['source_image'] = $image['full_path'];

答案 3 :(得分:0)

我知道这是一个非常古老的问题,但我遇到了同样的问题。

$config['create_thumb'] = true

没有创建新文件。

添加拇指标记配置:

$config['thumb_marker'] = '_thumb'

的工作。

似乎_thumb不是thumb_marker的默认值。