Resize & Crop Gambar Proporsional di Codeigniter

ProgrammingTutorial
  1. Beranda
  2. Programming
  3. Resize & Crop Gambar Proporsional di Codeigniter

Beberapa hari yang lalu saya memerlukan sebuah class atau library yang sederhana untuk melakukan upload gambar dan sekaligus menyesuaikan ukuran yang saya mau. Dulu saya pernah buat fungsi yang sama, waktu pertama kali kenal GD-nya PHP. Tapi sudah lupa bentuknya gimana. Yang sekarang saya buat adalah library extension untuk Codeigniter.

Codeigniter sudah punya library untuk upload, jadi upload tidak perlu dibahas lagi. Codeigniter juga sudah punya class untuk memanipulasi gambar diantaranya untuk melakukan Image Resizing, Thumbnail Creation, Image Cropping, dan lain-lain. Tapi untuk melakukan perubahan ukuran gambar dengan skala yang proporsional dengan ukuran yang spesifik, agak sedikit ada hitung-hitungannya.

Pertama kali, dengan membandingkan rasio ukuran awal dan ukuran yang baru, dapat menentukan menggunakan x atau y untuk menjaga proporsi gambar. Kalau mau meng-crop tepat di tengah-tengah gambar, maka axis x dan y juga ikut dihitung. Kecuali kalau cropnya mau dilakukan dari sebelah kiri-atas, axisnya tinggal diset x=0 & y=0. Lebih jelasnya lihat code-nya (my_image.php).

<?php
if (!defined('BASEPATH')) exit('No direct script access permitted.');

class My_image
{
  var $CI;
  function My_image()
  {
  }  
  
  function resize_crop($config, $resize_width=200, $resize_height=200)
  {
    if ($config)
    {
      $CI =& get_instance();
      $CI->load->library('image_lib');
      
      $img_size = getimagesize($config['source_image']);
      
      $t_ratio = $resize_width/$resize_height;
      $o_width = $img_size[0];
      $o_height = $img_size[1];
      if ($t_ratio > $o_width/$o_height)
      {
        $config['width'] = $resize_width;
        $config['height'] = round( $resize_width * ($o_height / $o_width));
        $y_axis = round(($config['height']/2) - ($resize_height/2));
        $x_axis = 0;
      }
      else
      {
        $config['width'] = round( $resize_height * ($o_width / $o_height));
        $config['height'] = $resize_height;
        $y_axis = 0;
        $x_axis = round(($config['width']/2) - ($resize_width/2));
      }
      
      $source_img01 = $config['new_image'];
      
      $CI->image_lib->clear();
      $CI->image_lib->initialize($config);
      $CI->image_lib->resize();
      
      $config['image_library'] = 'gd2';
      $config['source_image'] = $source_img01;
      $config['create_thumb'] = false;
      $config['maintain_ratio'] = false;
      $config['width'] = $resize_width;
      $config['height'] = $resize_height;
      $config['y_axis'] = $y_axis ;
      $config['x_axis'] = $x_axis ;
      
      $CI->image_lib->clear();
      $CI->image_lib->initialize($config);
      $CI->image_lib->crop();
      
      return $config['new_image'];
    }
    return FALSE;
  }
}

?>

Memanggil fungsinya seperti ini:

$config['image_library'] = 'gd2';
$config['source_image'] = $nama_source_image;
$config['new_image'] = $nama_hasil_image;

$this->load->library('my_image');
$this->my_image->resize_crop($config, '100', '200');

Saya termasuk noob di Codeigniter, mohon ma’af kalau ada yang salah tolong dikoreksi…

Mungkin Kamu juga suka

Shell Script untuk Mendownload Youtube dengan Wget dan Grep
Mencoba Komodo Edit

8 Komentar. Leave new

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Fill out this field
Fill out this field
Mohon masukan alamat email yang sah.
You need to agree with the terms to proceed

Latest

Tak ditemukan hasil apapun.