Координатор: библиотека GD уже установлена ​​на сервере, но показывает, что ваш сервер не поддерживает функцию GD, необходимую для обработки этого типа изображения - PullRequest
0 голосов
/ 05 мая 2018

Я уже установил библиотеку GD на сервер, но если я загружаю изображение с jpg,png,jpeg форматом изображения, тогда выдается ошибка "Your server does not support the GD function required to process this type of image." Если библиотека GD установлена, зачем показывать ошибки такого типа?

$config['upload_path'] = $this->upload_path;
$config['allowed_types'] = $this->image_types;
$config['max_size'] = $this->allowed_file_size;
$config['max_width'] = $this->Settings->iwidth;
$config['max_height'] = $this->Settings->iheight;
$config['overwrite'] = FALSE;
$config['encrypt_name'] = TRUE;
$config['max_filename'] = 25;                
$this->upload->initialize($config);

if (!$this->upload->do_upload('product_image')) {
    $error = $this->upload->display_errors();
    $this->session->set_flashdata('error', $error);

   redirect("products/edit/" . $id);
}

$photo = $this->upload->file_name;
$data['image'] = $photo;
$this->load->library('image_lib');
$config['image_library'] = 'gd2';
$config['source_image'] = $this->upload_path . $photo;
$config['new_image'] = $this->thumbs_path . $photo;
$config['maintain_ratio'] = TRUE;
$config['width'] = $this->Settings->twidth;
$config['height'] = $this->Settings->theight;

$this->image_lib->clear();
$this->image_lib->initialize($config);
if (!$this->image_lib->resize()) {
   echo $this->image_lib->display_errors();
}

1 Ответ

0 голосов
/ 05 мая 2018

Вы передаете $this->upload->file_name неизвестное значение. Библиотека GD не смогла найти формат изображения и расширение строки / объекта, которые вы передаете в $photo для проверки.

Вы должны использовать $this->upload->data() для захвата загруженных значений изображения, как показано ниже.

$config = [
    'upload_path' => $this->upload_path, // make sure you are adding tailing `/` in your upload path, else you should add `/` before joing the images below
    'allowed_types' => $this->image_types,
    'max_size' => $this->allowed_file_size,
    'max_width' => $this->Settings->iwidth,
    'max_height' => $this->Settings->iheight,
    'overwrite' => false,
    'encrypt_name' => true,
    'max_filename' => 25
];
$this->load->library('upload', $config);  // make sure you are loading the `upload` library, else it will load
$this->upload->initialize($config);             
if($this->upload->do_upload('product_image')){  
    $uploaded_data = $this->upload->data(); // here you should collect the uploaded data    
    $data['image'] = $uploaded_data['file_name'];   
    $config = [
        'image_library' => 'gd2',
        'source_image' => $this->upload_path . $uploaded_data['file_name'],
        'new_image' => $this->thumbs_path . $uploaded_data['file_name'],
        'maintain_ratio' => true,
        'width' => $this->Settings->twidth,
        'height' => $this->Settings->theight,
        'quality' => '100%',
    ];
    $this->load->library('image_lib', $config);
    $this->image_lib->initialize($config);
    if ($this->image_lib->resize()){
        return true;
    }else{
        return $this->image_lib->display_errors();
    }   
}else{
    $this->session->set_flashdata('error', $this->upload->display_errors());
    redirect("products/edit/" . $id);
}
...