2011-11-11 61 views
1

我試圖讓用戶上傳一個文件,然後我的功能將調整大小的照片像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); 
     } 
    } 

回答

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創建一個大拇指。

+0

這裏的派對真的很晚,但用戶指南說「create_thumb」設置會創建一個縮略圖(AND PRESERVE THE ORIGINAL)。爲什麼你必須在這種情況下指定new_image? 「create_thumb」的存在是否適合我們? – Greg

0

我認爲你缺少在第一縮放這一行:

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

我其實在我的代碼中有這樣一行,當我在發佈這個問題時刪除了我的評論時,我一定會意外地刪除它。 – Catfish

1

如果你想創建兩個新的縮放後的圖像和離開原來的不變,就需要

$config['create_thumb'] = TRUE; 

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

添加到第一部分。

根據您的代碼,您將用800x600版本覆蓋原始文件,然後創建一個165x165縮略圖。

+0

我讀了我的代碼,因爲它會將上傳的圖片大小調整爲800x600,然後將該圖片作爲源代碼,並基於800x600文件創建一個基於165x165的拇指,因爲我在第二個配置中創建了create_thumb = true。無論哪種情況,new_image都是票據。 – Catfish

0

我知道這是一個非常古老的問題,但我碰到同樣的問題。

$config['create_thumb'] = true 

未創建新文件。

添加大拇指標誌配置:

$config['thumb_marker'] = '_thumb' 

工作。

看來_thumb不是thumb_marker的默認值。