Ошибка Codeigniter Вы должны указать исходное изображение в ваших настройках - PullRequest
0 голосов
/ 19 октября 2018

Я получаю следующую ошибку при попытке создать миниатюру из загруженного изображения:

  • Вы должны указать исходное изображение в своих настройках.
  • неверный путь к изображению.
  • Ваш сервер не поддерживает функцию GD, необходимую для обработки этого типа изображения.

Однако, когда я отображаю исходное изображение, оно было загруженои файл существует, но не находит изображение.

Функция от контроллера

public function addgallery(){
        $year = date('Y');
        $date = str_replace( ':', '', $year);

        // Fetch a user or set a new one
        $this->data['page_title'] = 'Add New Gallery';
        $this->data['gallery'] = $this->gallery_m->get_new();

        // Set up the form
        $rules = $this->gallery_m->rules_admin;
        $this->form_validation->set_rules($rules);

        if ($this->form_validation->run() == TRUE || !empty($_FILES['thumbnail']['name'])) {
            if ( !$this->upload->do_upload('thumbnail')){
                $error = array('error' => $this->upload->display_errors());
                $this->load->view('upload_form', $error);
            }else{
                //file is uploaded successfully
                //now get the file uploaded data 
                $imagedata = $this->upload->data();

                //get the uploaded file name
                $image['pic_file'] = base_url().'assets/uploads/thumbnail/'.$date.'/'.$imagedata['file_name'].'-150x150';
                $thumbnail['pic_file'] = $this->gallery_m->resizeimage($imagedata['file_name']);
                $data = array('name' => $this->input->post('name'), 'description' => $this->input->post('description'), 'thumbnail' => $image['pic_file'], 'datesubmitted' => date('Y-m-d'));

                //store pic data to the db
                $this->gallery_m->qsave($data);
                $this->session->set_flashdata( 'message', 'Gallery Added Successfully' );
            }
        }

        // Load the view
        $this->data['subview'] = 'admin/gallery/addgallery';
        $this->load->view( 'admin/body', $this->data );
    }

Функция от модели

public function resizeimage($filename){
        $year = date('Y');
        $date = str_replace( ':', '', $year);
        $image_sizes = array(
            'thumb' => array(150, 100),
            'medium' => array(300, 300),
            'large' => array(800, 600)
        );
        $source_path = base_url().'assets/uploads/original/'.$date.'/'.$filename;
        $target_path = base_url().'assets/uploads/thumbnail/'.$date.'/';
        foreach ($image_sizes as $resize) {
            $config['image_library'] = 'GD2';
            $config['source_image'] = $source_path;
            $config['new_image'] = $target_path;
            $config['create_thumb'] = TRUE;
            $config['maintain_ratio'] = TRUE;
            $config['quality'] = '100';
            $config['thumb_marker'] = $resize[0].'x'.$resize[1];
            $config['width']     = $resize[0];
            $config['height']   = $resize[1];
            $this->load->library('image_lib');
            $this->image_lib->initialize($config);
            $this->image_lib->resize();
            if (!$this->image_lib->resize()) {
                echo $this->image_lib->display_errors();
                echo 'Source: '.$source_path.'<br /><br />';
                echo 'Target: '.$target_path.'<br /><br />';
            }
        }
        $this->image_lib->clear();
   }

По большей части, функция делает как надо.Изображение загружается, а путь к изображению и миниатюре сохраняется в базе данных.Но миниатюра не генерируется.

Я попробовал несколько примеров, которые нашел здесь, но ни один из них, похоже, не решил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...