[Tips] Cara Merezise Gambar dengan SimpleImage PHP Script

PHP adalah sebuah bahasa pemrograman web sisi server. Sebagai bahasa pemrograman sisi server, maka PHP juga memiliki kemampuan melakukan olah data baik berupa data text dan data gambar. Kemampuan ini terutama digunakan ketika PHP mengerjakan Gallery gambar, atau sebuah profil produk dimana harus tersedia gambar berbagai ukuran Pixel dan Byte nya. Sebagai contoh kasus adalah sebuah toko online, memiliki kebutuhan sisi admin dimana operator harus mampu melakukan upload gambar dengan ukuran berapapun, selanjutnya akan diatur oleh PHP dengan dipecah menjadi beberapa. Antara lain adalah menjadi gambar thumbnail, gambar medium dan gambar besar. Bayangkan saja jika halaman depan sebuah profil produk menampilkan banyak gambar dan gambar tersebut masih berukuran besar 800kb – 1mb, tentu akan memakan waktu dan juga quota bandwidth bagi client.

SimpleImage ini bisa disalin di http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/ dan silakan dijadikan sebuah file dengan nama SimpleImage.php. Namun menurut saya, ada beberapa revisi dari script tersebut. Yaitu pada bagian yang melibatkan $this->getheight(), diubah menjadi $this->getHeight(). Sehingga script SimpleImage ini menjadi seperti ini


image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {
 
         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {
 
         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {
 
         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {
 
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {
 
         imagegif($this->image,$filename);
      } elseif( $image_type == IMAGETYPE_PNG ) {
 
         imagepng($this->image,$filename);
      }
      if( $permissions != null) {
 
         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) {
 
      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {
 
         imagegif($this->image);
      } elseif( $image_type == IMAGETYPE_PNG ) {
 
         imagepng($this->image);
      }
   }
   function getWidth() {
 
      return imagesx($this->image);
   }
   function getHeight() {
 
      return imagesy($this->image);
   }
   function resizeToHeight($height) {
 
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
 
   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getHeight() * $ratio;
      $this->resize($width,$height);
   }
 
   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getHeight() * $scale/100;
      $this->resize($width,$height);
   }
 
   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;
   }      
 
}
?>

CARA MENGGUNAKAN.
Cara menggunakan script ini sangat mudah. Yaitu:

  1. Melakukan include SimpleImage.php
  2. Membuka sebuah object dari Class SimpleImage
  3. Meload gambar
  4. Mengolah gambar
  5. Menyimpan gambar dengan format baru

CONTOH: Misalkan kita akan membuat sebuah form upload gambar, dimana ketika diupload, maka gambar di server akan muncul dengan format ukuran 400×400 dan juga thumbnail 120×120. Dengan demikian script menjadi seperti demikian :


include "includes/SimpleImage.php";


if( isset( $_POST['upload'] ) ){
$file = $_FILES['upfile']['tmp_name'];

$image = new SimpleImage();

$image->load($file);

$image->resize(400,400);

$image->save("../images/product/".$_FILES['upfile']['name']);

$image->resize(120,120);

$image->save("../images/product/thumb/".$_FILES['upfile']['name']);		
}
?>


Gambar

PENJELASAN:
Ketika script dipanggil request, maka jika tidak terset input type upload alias karena belum ada POST, maka hanya akan ditampilkan form biasa. Selanjutnya jika telah diisi, dan diPOST, maka script akan terpanggil dengan kondisi terset POST. Selanjutnya akan di-include SimpleImage, menentukan variable file yang diupload, diload, diolah resize, dan disimpan pada tempat yang telah ditentukan pada save.

Berikut beberapa operasional yang disediakan oleh SimpleImage ini:

  1. Load
  2. Save
  3. Output
  4. GetWidth dan GetHeight
  5. Resize to Height dan resize to width
  6. Scale
  7. Resize

Dengan SimpleImage, selamat mencoba proses upload gambar dan melakukan operasional standard SimpleImage. Semoga bermanfaat. 🙂

[Contoh] Super Simple Paging Halaman PHP MySQL

Berdasarkan sebuah request/permintaan melalui surel, seorang rekan saya menanyakan : dapatkah Paging/penomoran halaman dipermudah , dipersingkat, tanpa ribet koding namun juga tidak ribet memenuhi halaman jika halaman hingga ribuan. Sebenarnya paging/ pemberian nomor halaman pada PHP tergantung pada kebutuhan. Biasanya sesuatu yang lengkap akan membutuhkan penanganan yang lengkap juga. Begitu juga dengan paging. Namun kadang dengan analisa yang tepat, bisa juga didapatkan sesuatu yang simple dan enak, dan dapat memenuhi banyak kebutuhan. Berikut disini saya paparkan hasil analisa paging simple penomoran halaman sederhana namun cukup powerfull.

 
Paging ini dimulai dari penentuan jumlah item tiap halaman yang akan ditampilkan. Selanjutnya dilakukan penangkapan parameter page dari method GET. Dalam contoh, item per halaman ditampilkan 10.

$item_per_page = 10;
$page =  isset($_GET['page']) ? $_GET['page'] : 1 ;

Notasi tersebut berarti $page adalah didapat dari jika $_GET[‘page’] ter-set. Namun jika tidak akan berisi value 1. Untuk menghindari penomoran melewati batas, seperti kurang dari satu atau berisi value kosong, maka hadang / filter dulu dengan

if( ( $page < 1) && (empty( $page ) ) ){
      $page=1; 
   }

Untuk mendapatkan jumlah halaman berarti harus didapatkan lebih dulu jumlah item yang ada. Jumlah item yang ada didapat dari query SQL.

   $sql           = "select * from `table`";
   $query         = mysql_query( $sql );
   $jumlah_data   = mysql_num_rows($query);
   $jumlah_hal    = ceil( $jumlah_data/$item_per_page );

Selanjutnya filter juga agar page yang terdapat di method GET tidak lebih dari jumlah halaman.

   if( $page>$jumlah_hal ){
      $page=$jumlah_hal;
   }

Kemudian kita dapat membuat sebuah variable $lanjut dan $sebelum dengan penentuan seperti ini:

   $lanjut  = $page + 1;
   $sebelum = $page - 1;

Barulah kita membuat kata-kata seperti berikut dilengkapi dengan navigasi Paging:

   Anda ada di halaman  dari 
<<   < sebelumnya    ||    selanjutnya >   >> Ke Halaman:

Tampilan sangat sederhana seperti berikut :

Anda ada di halaman 3 dari 3
<< < sebelumnya || sesudahnya > >>
Ke Halaman

Sederhana bukan?

Secara lengkap Code akan dipaparkan dalam bentuk fungsi, sehingga untuk penomoran halaman tinggal memanggil melalui fungsi seperti demikian

$sql = "select * from table";
$item_per_page =10;
paging($sql, $item_per_page);

FUNGSI UTAMA PAGING SIMPLE

Fungsinya adalah sebagai berikut di bawah (saya beri nama dengan paging.php). Anda dapat kopikan fungsi ini ke dalam kode anda, dan anda panggil ketika anda akan memberikan penomoran halaman. Anda juga dapat melakukan modifikasi sendiri sesuka hati:

$jumlah_hal ){
      $page=$jumlah_hal;
   }
   $lanjut  = $page + 1;
   $sebelum = $page - 1;
   ?>
   Anda ada di halaman  dari 
<<   < sebelumnya    ||    selanjutnya >   >> Ke Halaman:

Selanjutnya contoh perhalamannya akan seperti berikut:

Mudah bukan? Semoga bermanfaat

NIPNamaHONORStatus Ambil