Resizing, Cropping Image dengan ThumbnailFactory

Dalam dunia PHP biasanya kita mengenal 3 extension/library, yakni: Gmagick, Imagick dan GD. Ketiga library ini memiliki API dan metode sendiri untuk memanipulasi gambar, dan bahkan berbeda satu sama lainnya. Terkadang kita bisa dihadapkan dengan beberapa permasalahan, diantaranya:

Pada komputer development, kita menggunakan library imagick. Kemudian setelah pekerjaan selesai diupload (unggah) ke server. Ternyata coding tidak dapat berjalan, karena di server tidak terdapat library imagick. Dan yang ada hanyalah GD.

OMG, saya harus merubah coding dibeberapa tempat!! Sungguh menyebalkan.

Dan yang paling menyakitkan mungkin adalah kita tidak atau kurang memahami cara memanipulasi image dengan GD.

Disini "ThumbnailFactory" memegang kunci untuk memudahkan pekerjaan. Selama di server memiliki salah satu dari ketiga library tersebut, maka juru selamat telah ada ditangan kita.

Merubah ukuran image

$thumbnailer = ThumbnailFactory::create("pathname/foto.jpg");
$thumbnailer->resize(192);
$thumbnailer->save("pathname/foto_Medium.jpg");
$thumbnailer->adaptiveResize(96, 96);
$thumbnailer->save("pathname/foto_Small.jpg");

$thumbnailer->resize($width, $height) berfungsi untuk memperbesar ataupun mengecilkan ukuran image, dimana $width ataupun $height merupakan variabel ukuran maksimum yang boleh dicapai. Sedangkan $thumbnailer->adaptiveResize($width, $height) berfungsi hampir sama, tetapi memiliki sedikit perbedaan. Yakni image akan diperbesar/kecil sedekat mungkin dengan ukuran $width ataupun $height. Jika ukuran image melebihi salah satu variable, maka kelebihannya akan di-cropping. Hampir mirip dengan yang sering kita temui pada Facebook ataupun Twitter.

Mengecilkan image juga dapat dilakukan dengan menggunakan percentage, contoh: $thumbnailer->resizePercent(60). Cukup nyaman bukan?

Melakukan cropping image

Cropping image dapat dilakukan dengan dua cara, yaitu vanilla cropping dan crop-from-center.

  • Vanilla Cropping, yakni melakukan cropping berdasarkan posisi koordinat awal $x dan $y, dan $width ataupun $height adalah ukuran hasil akhir dari image. Contoh: $thumbnailer->cropImage($width, $height, $x, $y);
  • Crop-From-Center, yakni melakukan cropping dimulai dari titik tengah (center) image. Sedangkan $width dan $height adalah ukuran hasil akhir dari image. Jika variable $height tidak ditentukan, maka hasil akhir image akan berbentuk square. Contoh: $thumbnailer->cropImageFromCenter($width, $height);

Merotasi image

ThumbnailFactory juga dapat melakukannya. Image dapat dirotasi secara clockwise, counter-clockwise ataupun N derajat.

$thumbnailer->rotateImage('CW');
$thumbnailer->save("pathname/foto_cw.jpg");
$thumbnailer->rotateImageNDegrees(30);
$thumbnailer->save("pathname/foto_r30.jpg");

Untuk source code ThumbnailFactory dapat didownload dari repository saya di Github.

 

Met happy coding,..
Wassalam.