0

$ _FILESを繰り返し処理して、アップロードされた写真のサム画像を作成します。最初の画像では正常に機能しますが、次の画像では失敗します。特別な行を追加するのを忘れていますか、それともコードにフローがありますか?

注:元のファイルは正常にアップロードされ、それらからサムを作成する前にフォルダーに存在します。

エラーをエコーすると、「サーバーはこのタイプの画像の処理に必要なGD関数をサポートしていません。」というメッセージが表示されます。自分でアップロードすると動作します!!!!

ありがとう

public function upload_image()
{
    $config['upload_path']      = './web/uploads/images/';
    $config['allowed_types']    = 'gif|jpg|png';
    $config['max_size']         = 5120;
    $config['max_width']        = '0';
    $config['max_height']       = '0';
    $config['encrypt_name']     = true;

    $this->load->library('upload');
    $this->upload->initialize($config);     

   foreach ($_FILES as $file => $value)
   {
      $this->upload->do_upload($file);

      $result = $this->upload->data();

      if ($this->manipulate_image($result['file_name']) === false)
      {
          echo 'Failed to create thumb for the image ' . $value['name'] . '<br />';
      }
   }
}

    public function manipulate_image($file_name)
    {
        $config['image_library']    = 'gd2';
        $config['source_image']     = './web/uploads/images/' . $file_name;
        $config['create_thumb']     = true;
        $config['maintain_ratio']   = false;
        $config['width']            = 100;
        $config['height']           = 100;
        //$config['master_dim']     = 'width';
        $config['thumb_marker']     = '_thumb';

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

        if (! $this->image_lib->resize())
        {
            $this->image_lib->clear();
            return false;
        }

        $this->image_lib->clear();
        return true;
    }
4

2 に答える 2

1

最初にload、ライブラリ上のをforeachループの外側に移動し、次にループの内側を使用initializeして構成を設定します。

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

また、ここに記載されているように、あなたは使用することができます

echo $this->image_lib->display_errors();

あなたの問題についてより多くの洞察を得るために

于 2012-12-11T16:29:53.670 に答える
0

どうやら、loading image_libをループ内で複数回ロードすると、この問題が発生します。

ループに含めずに解決しました。

于 2012-12-11T16:28:43.693 に答える