4

我在使用 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(); 
    }
}       
4

2 回答 2

2

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

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 个字母的扩展名,它将起作用;)

于 2012-12-13T16:32:30.117 回答
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(); 
    }
}       
于 2012-12-13T16:29:46.780 回答