Faber Nainggolan Blog's

Artikel, Tutorial Pemrograman, Tutorial database, PHP dan Framework

LightBlog

Pada upload codeigniter ada saat tertentu kita pengen  membuat semacam identitas foto atau gambar agar terlihat lebih pribadi atau mempunyau...

Manipulasi Image Watermark pada Codeigniter



Pada upload codeigniter ada saat tertentu kita pengen  membuat semacam identitas foto atau gambar agar terlihat lebih pribadi atau mempunyau tanda bahwa kita pemilik gambar tersebut. Jadi kita perlu melakukan manipulasi terhadap gambar tersebut menggunakan library manipulation. Oke tanpa berpanjang lebar mari kita mulai.

Contoh class controller yang saya gunakan adalah dari artikel sebelumnya yaitu upload codeigniter bisa dilihat melalui link berikut


Controller 

pada function aksi_tambah silakan tambah script
class Upload extends CI_Controller {
/******************************************************
  | Upload
  | controller upload manipulasi watermark gambar
  | by gTech
  *****************************************************/
  public function __construct() {
    parent::__construct();
    $this->load->library('image_lib');
  }
  
    //fungsi awal ketika kita panggil controller gambar
    public function index(){
      $data['judul'] = 'Upload Gambar'; //judul title      
      $data['queryupload'] = $this->mupload->getallimage(); //model semua file 
      
      //template views
      $this->load->view('header',$data); //load header
      $this->load->view('upload/vupload',$data); //load views
      $this->load->view('footer',$data); //load footer
    }
     
    //fungsi form tambah ketika kita panggil pada link 
    public function tambah(){     
      $data['judul'] = 'Tambah Gambar';
      $data['aksi'] = 'aksi_tambah';

      //template views
      $this->load->view('header',$data);
      $this->load->view('upload/vformupload',$data);
      $this->load->view('footer',$data);
    }
    //fungsi form edit ketika kita panggil pada link
    public function edit(){
      $id = $this->input->get('id');
      $data['row'] = $this->mupload->getbyid($id);
      $data['judul'] = 'Edit Gambar';
      $data['aksi']  = 'aksi_edit';

      //template views
      $this->load->view('header',$data);
      $this->load->view('upload/vformupload',$data);
      $this->load->view('footer',$data);
    }
    //fungsi untuk menangani pemanggilan aksi tambah ketika form di submit
    public function aksi_tambah(){
        //deklarasikan variabel dari form
        $nama     = addslashes($this->input->post('nama'));
        $keterangan    = addslashes($this->input->post('keterangan'));
 
        //validasi 
        $this->form_validation->set_rules('gambar', 'File Gambar', 'trim|xss_clean'); //file gambar

        //configurasi upload
        $nmfile = "file_".time(); //nama file saya beri nama langsung dan diikuti fungsi time
        $config['upload_path'] = './assets/uploads/'; //path folder
        $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
        $config['max_size'] = '2048'; //maksimum besar file 2M
        $config['max_width']  = '1288'; //lebar maksimum 1288 px
        $config['max_height']  = '768'; //tinggi maksimu 768 px
        $config['file_name'] = $nmfile; //nama yang terupload nantinya
        $this->upload->initialize($config);

        if ($this->form_validation->run() == TRUE) {
            if ($this->upload->do_upload('gambar')){
                $gbr = $this->upload->data();
                $config2['source_image'] = './assets/uploads/'.$gbr['file_name'];
                //The image path,which you would like to watermarking
                $config2['wm_text'] = 'arjunphp.com';
                $config2['wm_type'] = 'text';
                $config2['wm_font_path'] = './fonts/atlassol.ttf';
                $config2['wm_font_size'] = 16;
                $config2['wm_font_color'] = 'ffffff';
                $config2['wm_vrt_alignment'] = 'middle';
                $config2['wm_hor_alignment'] = 'right';
                $config2['wm_padding'] = '20';
                $this->image_lib->initialize($config2);
                if (!$this->image_lib->watermark()) {
                    echo $this->image_lib->display_errors(); 
                    
                    }else{
                    echo 'Successfully updated image with watermark';
                    
                    $data = array(
                      'nm_gbr'  => $gbr['file_name'],
                      'tipe_gbr' => $gbr['file_type'],
                      'ket_gbr'=> $keterangan
                    );
                    $this->mupload->getinsert($data); //model insert data kedatabase
                     $this->session->set_flashdata("pesan", "Data berhasil di insert"); //pesan yang tampil setalah berhasil di insert
                     redirect('upload'); 
}
                
            }else{
              $info = array(
                'aket'=>$keterangan,
                'judul' => 'Tambah Gambar',
                'aksi' => 'aksi_tambah'
              );
              $err = $this->upload->display_errors(); //error upload
              $this->session->set_flashdata("pesan", "Data Gagal di insert ".$err);
              //ketika error terjadi halaman akan tetap di form 
              $this->load->view('header',$info); 
              $this->load->view('upload/vformupload',$info);
              $this->load->view('footer',$info); 

            }
        }else{
          //ini berfungsi agar field form tidak menjadi kosong, dibuat dalam array
          //variabel akan tetap dibawa jika error terjadi pada saat validasi
          $info = array(
            'aket'=>$keterangan,
            'judul' => 'Tambah Gambar',
            'aksi' => 'aksi_tambah'
          );
          $err = validation_errors(); //error validasi akan dimunculkan pada pesan

          $this->session->set_flashdata("pesan", "Data Gagal di insert ".$err);

          //ketika error terjadi halaman akan tetap di form barang
          $this->load->view('header',$info); 
          $this->load->view('upload/vformupload',$info);
          $this->load->view('footer',$info); 
        }
      }
}

0 comments: