Попытка изменить изображение дважды в функции, и это только один раз - PullRequest
1 голос
/ 11 ноября 2011

Я пытаюсь заставить пользователя загрузить файл, и тогда моя функция изменит размер этой фотографии примерно до 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 ]

1 голос
/ 11 ноября 2011

во второй раз запустив image_lib, вы захотите избежать перезаписи файла, указав новый файл для его создания: после:

$thumbConfig['height'] = 165;

add:

$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 голос
/ 11 ноября 2011

Если вы хотите создать два новых изображения с измененным размером и оставить исходный без изменений, вам необходимо добавить

$config['create_thumb'] = TRUE;

или

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

в первый раздел.

В соответствии с вашим кодом вы перезапишете исходный файл версией 800x600, а затем создадите миниатюру размером 165x165.

0 голосов
/ 29 марта 2013

Я знаю, что это очень старый вопрос, но я столкнулся с той же проблемой.

$config['create_thumb'] = true

не создал новый файл.

Добавление конфигурации маркера большого пальца:

$config['thumb_marker'] = '_thumb'

работал.

Похоже, что _thumb не является значением по умолчанию для thumb_marker.

0 голосов
/ 11 ноября 2011

Я думаю, что вам не хватает этой строки при первом изменении размера:

$thumbConfig['source_image'] = $image['full_path'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...