0

I get a module like a blog, and I must upload an image to my website. but when I upload my image not be resized/cropped automatically.

CONTROLLER

 function simpan_campaign(){
        $config['upload_path'] = './assets/images/upload'; //path folder
        $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
        $config['encrypt_name'] = TRUE; //Enkripsi nama yang terupload

        $this->upload->initialize($config);
        if(!empty($_FILES['filefoto']['name'])){

            if ($this->upload->do_upload('filefoto')){
                $gbr = $this->upload->data();
                //Compress Image
                $config['image_library']='gd2';
                $config['source_image']='./assets/images/upload'.$gbr['file_name'];
                $config['create_thumb']= FALSE;
                $config['maintain_ratio']= FALSE;
                $config['quality']= '50%';
                $config['width']= 380;
                $config['height']= 264;
                $config['new_image']= './assets/images/upload'.$gbr['file_name'];
                $this->load->library('image_lib', $config);
                $this->image_lib->clear();
                $this->image_lib->initialize($config);
                $this->image_lib->resize();

                $image=$gbr['file_name'];
                $title=$this->input->post('title');
                $cashtarget=$this->input->post('cashtarget');
                $campcode=$this->input->post('campcode');
                $datefrom=$this->input->post('datefrom');
                $dateend=$this->input->post('dateend');
                $category=$this->input->post('category');
                $desc=$this->input->post('description');

                $this->main_model->save_campaign($title,$desc,$image,$cashtarget,$campcode,$datefrom,$dateend,$category);
                echo "Image berhasil diupload";
                redirect('account/add');
            }

        }else{
            echo "Image yang diupload kosong";
        }

    }

and my model like :

MODEL

    function save_campaign
($title,$desc,$image,$cashtarget,$campcode,$datefrom,$dateend,$category){
            $hsl=$this->db->query("INSERT INTO tcampaign (title,description,pathimage,cashtarget,campcode,datefrom,dateend,category) VALUES ('$title','$desc','$image','$cashtarget','$campcode','$datefrom','$dateend','$category')");
            return $hsl;
        }

I can upload but i cant resize or crop on my view

  • https://stackoverflow.com/questions/19218247/codeigniter-image-resize - look here. – A R Mar 14 '18 at 15:12
  • i have to try, but fail – Reza Alvaero Mar 14 '18 at 15:23
  • What resize errors do you get `echo $this->image_lib->display_errors();` –  Mar 14 '18 at 22:38
  • is the image even getting uploaded? you have no `display_errors()` logic for either the upload function or the resize function. adding elses, and these functions will 100% allow you to see what error is occuring... – Alex Mar 14 '18 at 23:56

1 Answers1

0

I suspect that the biggest problem was this declaration:

'./assets/images/upload'.$gbr['file_name']; if you notice there is no ending slash before the filename...

Also you used the same variable $config for both upload and resizing. This can also cause some unexpected results. Just use a different variable for both. Here we have $upconfig and $config.

I've also cleaned up the function a bit and added in the error methods so you can see what is going wrong if something does. You should handle the errors more elegantly than just echoing them.

function simpan_campaign() {
        $this->load->library('upload'); // not sure if you already autoloaded this
        // this way $config won't overwrite or add on to the upload config
        $upconfig['upload_path'] = './assets/images/upload/'; // missing end slash
        $upconfig['allowed_types'] = 'gif|jpg|png|jpeg|bmp';
        $upconfig['encrypt_name'] = TRUE;
        $this->upload->initialize($upconfig);
        if (!empty($_FILES['filefoto']['name'])) {
            if ($this->upload->do_upload('filefoto')) {
                $filename = $this->upload->data('file_name');
                //Compress Image
                $config['image_library'] = 'gd2';
                $config['source_image'] = $this->upload->data('full_path'); // missing slash before name
                $config['create_thumb'] = FALSE;
                $config['maintain_ratio'] = FALSE;
                $config['quality'] = '50%';
                $config['width'] = 380;
                $config['height'] = 264;
                // not required as you have declared the same filename
                // the original image will be targeted for resize
                //$config['new_image'] = './assets/images/upload/' . $filename;
                $this->load->library('image_lib');
                $this->image_lib->clear();
                $this->image_lib->initialize($config);
                if (!$this->image_lib->resize()) {
                    echo $this->image_lib->display_errors();
                    exit;
                }
                $title = $this->input->post('title');
                $cashtarget = $this->input->post('cashtarget');
                $campcode = $this->input->post('campcode');
                $datefrom = $this->input->post('datefrom');
                $dateend = $this->input->post('dateend');
                $category = $this->input->post('category');
                $desc = $this->input->post('description');

                $this->main_model->save_campaign($title, $desc, $filename, $cashtarget, $campcode, $datefrom, $dateend, $category);
                echo "Image berhasil diupload";
                redirect('account/add');
            } else {
                echo $this->upload->display_errors();
                exit;
            }
        } else {
            echo "Image yang diupload kosong";
        }
    }
Alex
  • 9,215
  • 8
  • 39
  • 82
  • Work for me on codeigniter 3, but i cant resize on codeigniter 2. i like codeigniter bcs i thing codeigniter 2 stable better than codeigniter 3 . Thx alex – Reza Alvaero Mar 15 '18 at 08:14