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

显然在循环中多次加载加载 image_lib 会导致此问题。

在不包含循环的情况下解决。

于 2012-12-11T16:28:43.693 回答