我迭代$_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;
}
我看到两件事,首先,我会将库上的load
移动到foreach
循环之外,然后在循环内部使用initialize
来设置配置:
$this->image_lib->initialize($config);
此外,如本文所述,您可以使用
echo $this->image_lib->display_errors();
为了获得更多关于您的问题的见解
显然,在循环中多次加载image_lib会导致此问题。
已解决,但不包含在循环中。