codeigniter图像调整大小

时间:2012-12-13 16:18:07

标签: php codeigniter

我遇到了codeigniter图像调整大小的问题。我将文件作为zip文件上传然后解压缩,解压后我扫描目录以寻找.jpg。如果它是.jpg扩展名,则需要调整大小。当zip文件只有一个.jpg图像但当zip文件有2个以上的.jpg图像文件时它不能正常工作。

它会扫描所有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 个答案:

答案 0 :(得分:2)

您应该使用 $ this-> image_lib-> clear();

clear函数重置处理图像时使用的所有值。如果您在循环中处理图像,则需要调用此方法。

$这 - > image_lib->清除();

来自:http://ellislab.com/codeigniter/user-guide/libraries/image_lib.html

还提示:

无需使用字符串函数来获取文件扩展名。您可以使用实际设计的内容来满足您的需求: pathinfo():

$ext = pathinfo($image, PATHINFO_EXTENSION);

在你的情况下:

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

这样,如果您要添加一个包含3个以上字母的扩展名,它就会起作用;)

答案 1 :(得分: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(); 
    }
}