Изменение размера изображения Codeigniter, изменение размера только одного изображения

В основном я пытаюсь изменить размер изображения на два изображения разного размера. Однако я могу изменить размер только первого featured_$filename, я не могу изменить размер thumb_$filename.

Сначала я попытался создать одну функцию и передать конфигурацию в виде массива, и это не сработало, но то же самое, было изменено только одно изображение.

    $this->resizeImage($imagePath, $file['upload_data']['file_name']);


    $this->resizeThumb($imagePath, $file['upload_data']['filename']);

public function resizeImage($imagePath, $filename){
        $config['image_library'] = 'gd2';
        $config['source_image'] = $imagePath; 
        $config['create_thumb'] = FALSE;
        $config['new_image'] = 'featured_'.$filename;
        $config['maintain_ratio'] = TRUE;
        $config['width']     = 570;
        $config['height']   = 372;
        $this->load->library('image_lib', $config); 
        $this->image_lib->resize();
        $this->image_lib->clear();


    }

    public function resizeThumb($imagePath, $filename){
        $config['image_library'] = 'gd2';
        $config['source_image'] = $imagePath; 
        $config['create_thumb'] = FALSE;
        $config['new_image'] = 'thumb_'.$filename;
        $config['maintain_ratio'] = TRUE;
        $config['width']     = 180;
        $config['height']   = 135;
        $this->load->library('image_lib', $config); 
        $this->image_lib->resize();
        $this->image_lib->clear();


    }

person prakashchhetri    schedule 07.07.2013    source источник


Ответы (2)


Вам нужно загрузить библиотеку только один раз, но дважды инициализировать библиотеку с разными конфигурациями. Например. :

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

/* size 64*72 for comments */
$configThumb = array();  
$configThumb['image_library']   = 'gd2';  
$configThumb['create_thumb']    = TRUE;
$configThumb['new_image']       = './profile_images/thumbs/';  
$configThumb['maintain_ratio']  = TRUE;
$configThumb['width']           = 64;  
$configThumb['height']          = 72;
$configThumb['thumb_marker']    = "";
//$this->load->library('image_lib');
/* size 64*72 for comments */

/* size 167*167 for profile page */
$configThumbMedium = array();  
$configThumbMedium['image_library']   = 'gd2';  
$configThumbMedium['create_thumb']    = TRUE;
$configThumbMedium['new_image']       = './profile_images/medium/';  
$configThumbMedium['maintain_ratio']  = TRUE;
$configThumbMedium['width']           = 167;  
$configThumbMedium['height']          = 167;
$configThumbMedium['thumb_marker']    = "";
/* size 167*167 for profile page */

if(!$this->upload->do_upload('image')){
    return 0;
}

$uploadedDetails    = $this->upload->data();
if($uploadedDetails['is_image'] == 1){
    $this->image_lib->initialize($configThumb);
    $this->image_lib->resize();
    $this->image_lib->initialize($configThumbMedium);
    $this->image_lib->resize();
}

Надеюсь, поможет.

person Nil'z    schedule 08.07.2013
comment
Красиво оформленный ответ. Я приму ответ, как только проверю его. Спасибо . - person prakashchhetri; 08.07.2013
comment
Плюс 1 за практический ответ - person Nikz; 24.05.2019

Привет, сначала загрузите библиотеку и используйте $this->image_lib->initialize($config) для передачи конфигурации, а также путь передачи конфигурации new_image с новым именем изображения.

$this->load->library('image_lib');     
$config['new_image'] = 'image_dir/thumb_'.$filename
//ALL your other configs
$this->image_lib->initialize($config)
person umefarooq    schedule 07.07.2013