About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • PHP
  • /
  • Membuat Script Service WebThumbnail Sendiri dengan PHP
PHP

Membuat Script Service WebThumbnail Sendiri dengan PHP

Artikel yang saya posting kali ini masih terkait dengan web thumbnail. Jika dalam artikel sebelumnya saya telah jelaskan bagaimana menampilkan web thumbnail dari suatu situs menggunakan layanan atau service dari situs webthumbnail.org, maka dalam artikel kali ini saya akan bahas bagaimana membuat layanan serupa seperti webthumbnail.org dari PC kita sendiri dan kita buat scriptnya sendiri. Artinya, ketika akan membuat web thumbnail akan tetapi kita tidak perlu lagi menggunakan layanan dari webthumbnail.org atau situs layanan web thumbnail lainnya. Menarik bukan???

OK, sebelum kita masuk ke pembuatan scriptnya, terlebih dahulu saya akan jelaskan mekanisme prosesnya bagaimana cara memperoleh thumbnail suatu situs. Misalkan kita ingin membuat thumbnail dari suatu situs, misalnya situs X. Langkah pertama adalah kita harus mengcapture tampilan yang nampak dari situs X tersebut melalui sebuah browser. Bagaimana caranya? apakah kita lakukan secara manual dengan tombol Print Screen di keyboard? Tentu tidak, karena hal ini akan merepotkan. So… kita butuh suatu software yang secara otomatis bisa mengcapture halaman dari suatu situs dari apa yang tampil dari sebuah browser, tanpa kita membuka browser dan tanpa kita buka situs tersebut di browser. Trus.. apa ada softwarenya? tentu saja ada, salah satu diantaranya adalah IECapt. Software ini akan mengcapture tampilan halaman suatu situs memanfaatkan browser IE (Internet Explorer), tanpa kita membuka IE itu sendiri dan membuka situsnya melainkan cukup melakukan capture melalui command. Setelah tampilan situs X tersebut dicapture menjadi sebuah file image, selanjutnya kita buat image yang lebih ukurannya yang sering disebut istilah thumbnail. Untuk proses pengolahan file image hasil capture tadi ke bentuk thumbnail, cukup kita gunakan script PHP saja.

Ide penyelesaian masalah sudah disampaikan, selanjutnya kita siap perangkatnya. Khususnya software IECapt terlebih dahulu. Silakan Anda mengunduhnya secara gratis di iecapt.sourceforge.net. Kemudian Anda ekstrak, dan untuk lebih mudahnya Anda letakkan dalam sebuah folder dalam htdocs atau www. Letak file IECapt ini nanti akan diletakkan dalam folder yang sama dengan script PHP untuk mengolah thumbnailnya.

Adapun cara menggunakan IECapt ini cukup mudah sekali, hanya dengan mengetik command berikut ini via command prompt.

IECapt.exe --url=https://blog.rosihanari.net --out=blogku.jpg

Command di atas dimaksudkan untuk mengcapture tampilan situs https://blog.rosihanari.net via IE, dan hasil capturenya disimpan dalam file blogku.jpg. Oya, jangan lupa.. pastikan ada IE terinstall di PC Anda, meskipun tidak perlu dibuka browsernya. Hasil capture, akan berupa file image yang berukuran pixel sangat besar serta file sizenya sendiri sampai dengan ratusan KB. Selanjutnya file image hasil capture ini nanti akan diproses dengan script PHP untuk diperoleh thumbnailnya dengan ukuran pixel dan filesize yang lebih kecil.

OK, penjelasan cara penggunaan IECapt sudah, selanjutnya kita bahas pembuatan script PHP nya. Script PHP yang akan kita buat ini nantinya diharapkan bisa menerima request untuk mengenerate thumbnail suatu situs via GET request dalam bentuk:

http://host/thumbnail.php?url=https://blog.rosihanari.net&width=200&height=200

Jadi, dengan hanya melakukan request seperti di atas terhadap script thumbnail.php, secara otomatis nantinya akan muncul thumbnail dari situs https://blog.rosihanari.net dengan ukuran image thumbnailnya maksimum 200 pixel untuk width nya (panjang) dan 200 pixel untuk height nya (lebar). Dengan demikian, nantinya di dalam script thumbnail.php ini ada proses capturing menggunakan IECapt kemudian membuat thumbnailnya.

Oya, untuk proses pembuatan thumbnail image, kita bisa memanfaatkan class Zubrag Image (image.class.php) yang sudah jadi supaya cepat tanpa perlu membuatnya (dasar males he… 3x) 🙂

OK, ini dia isi script thumbnail.php nya

thumbnail.php

<?php

// baca parameter x -> ukuran maximum pixel panjang thumbnail
$x = $_GET['width'];
// baca parameter y -> ukuran maximum pixel tinggi thumbnail
$y = $_GET['height'];
// baca URL website yang akan dibuat thumbnail
$website_url = $_GET['url'];

// letak direktori penyimpanan image cache hasil capture IECapt.exe
$imgcache = 'd:/www/thumb/imgcache/';

// setting waktu expired baca ada tidaknya image yg dicapture
$cache_expire_time = 60;
// jika capture image website terlalu tinggi, maka dicrop 1024 pixel untuk heightnya
$cut_x = 0;
$cut_y = 1024;
// hasil capture image format JPG
$image_type = 2;
$output_format = 'jpg';

// membuat hashing dari URL
$website_url_md5 = md5($website_url);
// memformat nama file image hasil capture
$cached_filename = $imgcache . $website_url_md5 . '.' . $output_format;

// cek ada tidaknya file cache image
// jika tidak ada, maka lakukan capture dg IECapt
if (!file_exists($cached_filename) 
|| filemtime ($cached_filename) + $cache_expire_time * 60 < time() ) {
  exec('IECapt.exe ' . escapeshellarg($website_url) . ' ' . escapeshellarg($cached_filename));

} 

// jika proses capture gagal (tidak terbentuk file capture dr IECapt.exe)
if (!file_exists($cached_filename)) {
  die("Thumbnail gagal dibuat");
}

// proses thumbnailing image hasil capture dan tampilkan
include("image.class.php");
$img = new Zubrag_image;

$img->image_type   = $image_type;
$img->max_x        = $x;
$img->max_y        = $y;
$img->save_to_file = false;
$img->cut_x        = $cut_x;
$img->cut_y        = $cut_y;

$img->GenerateThumbFile($cached_filename, '');

?>

Perlu saya jelaskan sedikit cara kerja script di atas. Jika script thumbnail.php ini dijalankan di browser untuk membuat thumbnail dari suatu situs X, maka terlebih dahulu script akan mengecek apakah sudah ada file image hasil capture dari IECapt sebelumnya. Jika sudah ada, maka script akan langsung membuat thumbnail dari image hasil capturenya. Namun, jika belum ada maka script akan menyuruh IECapt untuk mengcapture situs X tersebut dan selanjutnya file image hasil capture akan dibuat thumbnailnya. Mekanisme ini dibuat supaya mengurangi beban komputer dalam proses capturing, untuk situs-situs yang pernah dicapture sebelumnya tidak perlu dicapture lagi dan cukup menggunakan file hasil capture sebelumnya.

Selanjutnya… terkadang proses capturing ini gagal dilakukan, misalkan karena ada gangguan koneksi internet sehingga file hasil capture tidak terbentuk. Oleh karena itu perlu dibatasi waktu proses capturing ini, sehingga bila waktu proses capturingnya melebihi waktu tertentu dianggap proses capturing gagal. Pada script di atas dibatasi waktunya maksimum 60 detik.

$cache_expire_time = 60;

Terkadang pula, ada suatu situs yang tampilan halamannya sangat panjang pada height nya, sehingga file hasil capture tidak proporsional antara width dan height nya. Sehingga perlu kita lakukan cutting pada heightnya. Dalam script di atas proses cuttingnya pada ukuran 1024 pixel height.

$cut_y = 1024;

Pada script di atas, terdapat baris perintah

$imgcache = 'd:/www/thumb/imgcache/';

Perintah tersebut merupakan path untuk menyimpan file image hasil capture IECapt. Anda bisa tentukan sendiri path nya.

Perhatikan pula perintah ini:

$website_url_md5 = md5($website_url);

Apa maksudnya? perintah tersebut digunakan untuk membuat kode unik (hashing) dari URL situsnya. Kode unik hasil hashing ini nanti untuk memberi nama file image hasil capture dari suatu situs tertentu.

Nah… setelah script thumbnail.php ini sudah jadi, Anda bisa jalankan langsung via browser atau bisa juga Anda sisipkan dalam tag HTML, misalnya:

<img src="thumbnail.php?url=https://blog.rosihanari.net&width=200&height=200" />

Mudah bukan membuatnya??? selamat mencoba 🙂

Oya, sepertinya IECapt ini hanya bisa jalan di OS Windows. Silakan Anda cari software serupa untuk di Linux.

 

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply