4

コードイグナイターの画像サイズ変更に問題があります。ファイルを zip ファイルとしてアップロードしてから解凍します。解凍後、ディレクトリをスキャンして .jpg を探します。拡張子が .jpg の場合は、サイズを変更する必要があります。zip ファイルに .jpg 画像が 1 つしかない場合は機能しますが、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 に答える