4

Codeigniter は初めてです。これは私がやりたいことです:

  1. ユーザーがプロフィール写真をアップロードします。
  2. 元の画像をいくつかのサイズ (400×300、200×200、32×32 など) にリサイズします。

しかし、画像をアップロードすると、400×300の 1 つのサイズだけが正常にサイズ変更されます。

これが私のコードです:

 $config['image_library']   = 'gd2';
 $config['source_image']    = '/path/to/image/mypic.jpg';
 $config['create_thumb']    = TRUE;
 $config['maintain_ratio']  = TRUE;
 $config['width']           = 400;
 $config['height']          = 300;
 $config['new_image']   = 400x300image;
 $this->load->library('image_lib', $config); 
 $this->image_lib->resize();
 $this->image_lib->clear()

 $config['image_library']   = 'gd2';
 $config['source_image']    = '/path/to/image/mypic.jpg';
 $config['create_thumb']    = TRUE;
 $config['maintain_ratio']  = TRUE;
 $config['width']           = 200;
 $config['height']          = 200;
 $config['new_image']   = 200x200image;
 $this->load->library('image_lib', $config); 
 $this->image_lib->resize();
 $this->image_lib->clear()

 $config['image_library']   = 'gd2';
 $config['source_image']    = '/path/to/image/mypic.jpg';
 $config['create_thumb']    = TRUE;
 $config['maintain_ratio']  = TRUE;
 $config['width']           = 32;
 $config['height']          = 32;
 $config['new_image']   = 32x32image;
 $this->load->library('image_lib', $config); 
 $this->image_lib->resize();
 $this->image_lib->clear();

$config2andのような別の設定名を使用してみ$config3ましたが、出力が得られませんでした。

問題を解決するのを手伝ってください。

4

3 に答える 3

7

CIアプリの1つに同様の機能が組み込まれています。私の場合、別の関数で構成ファイルが必要だったので、別のバージョンを作成しました。

ライブラリを複数回ロードしないでください。一度は大丈夫です。毎回新しい設定でライブラリを再初期化するだけです。

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

 /* First size */
 $configSize1['image_library']   = 'gd2';
 $configSize1['source_image']    = '/path/to/image/mypic.jpg';
 $configSize1['create_thumb']    = TRUE;
 $configSize1['maintain_ratio']  = TRUE;
 $configSize1['width']           = 400;
 $configSize1['height']          = 300;
 $configSize1['new_image']   = '400x300image';

 $this->image_lib->initialize($configSize1);
 $this->image_lib->resize();
 $this->image_lib->clear();

 /* Second size */    
 $configSize2['image_library']   = 'gd2';
 $configSize2['source_image']    = '/path/to/image/mypic.jpg';
 $configSize2['create_thumb']    = TRUE;
 $configSize2['maintain_ratio']  = TRUE;
 $configSize2['width']           = 200;
 $configSize2['height']          = 200;
 $configSize2['new_image']   = '200x200image';

 $this->image_lib->initialize($configSize2);
 $this->image_lib->resize();
 $this->image_lib->clear();

等々。メモリのために、上記のように構成ファイルの設定を解除してリセットできると思いますが、私が行ったように別のコントローラーメソッドで画像のサイズ変更を使用する場合は、それらを別々に保存すると便利です。

于 2012-09-05T05:06:38.203 に答える
3

問題は、CI はすべてのライブラリを静的配列にロードした後に保存し、ライブラリがロードされると再度ロードしないことです。

したがって、できることは、新しい構成で再度初期化できることです。

$this->image_lib->clear();

// make changes to the $conig here

$this->image_lib->initialize($config);

それはうまくいくはずです。

ソース。

于 2012-09-05T04:56:57.213 に答える
2

これには image_moo ライブラリを使用することをお勧めします....非常にシンプルで無駄がなく、クリーンです。これを参照してください:http://www.matmoo.com/digital-dribble/codeigniter/image_moo/

于 2012-09-05T09:37:43.297 に答える