2012-12-13 255 views
4

我有一個codeigniter圖像調整大小的問題。我將文件作爲zip文件上傳,然後解壓縮,解壓後,我掃描目錄以查找.jpg。如果它的.jpg擴展名需要調整大小。它適用於壓縮文件只有一個.jpg圖像但壓縮文件具有2個以上.jpg圖像文件時不起作用的情況。codeigniter圖像調整大小

它掃描所有的JPG文件的問題是它沒有調整大小。

我想在上傳zip文件時調整所有jpg文件的大小。

這裏是我的代碼:

$images = scandir('uploads/new'); 
//print_r($images); 
foreach($images as $image){ 
    $last = substr($image, -3); 
    if($last == 'jpg'){ 
     $image_path = './uploads/new/'.$image; 

     //$config['image_library'] = 'gd2'; 
     $config['source_image'] = $image_path; 
     $config['maintain_ratio'] = TRUE; 
     $config['width'] = 100; 
     $config['height'] = 100; 

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

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

回答

2

您應該使用$這個 - > image_lib->明確的();

clear函數重置處理圖像時使用的所有值。如果您在循環中處理圖像,您將需要調用此函數。

$ this-> image_lib-> clear();

來源:http://ellislab.com/codeigniter/user-guide/libraries/image_lib.html

另外一個提示:

沒有必要使用字符串函數來得到你的文件擴展名。您可以使用的東西,實際上是專門爲你想要的東西:PATHINFO():

$ext = pathinfo($image, PATHINFO_EXTENSION); 

你的情況:

if(pathinfo($image, PATHINFO_EXTENSION) == 'jpg'){ 

這樣,如果你將永遠添加擴展與更多然後3它會工作的信件;)

+0

感謝它現在的工作。還要感謝關於pathinfo函數的其他建議。乾杯! –

0

嘗試清除你的配置在foreach循環

$images = scandir('uploads/new'); 
//print_r($images); 
foreach($images as $image){ 
    $this->image_lib->clear(); // clear previous config 
    $last = substr($image, -3); 
    if($last == 'jpg'){ 
     $image_path = './uploads/new/'.$image; 

     //$config['image_library'] = 'gd2'; 
     $config['source_image'] = $image_path; 
     $config['maintain_ratio'] = TRUE; 
     $config['width'] = 100; 
     $config['height'] = 100; 

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

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