2012-12-13 252 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(); 
    } 
}