[?] Joy, Works and Thoughts Rotating Header Image

Membuat File Gambar Melalui PHP

Tulisan berikut akan menceritakan proses pembuatan userbar untuk Indoupload.NET yang menggabungkan file gambar (png) dengan text yang berisi keterangan mengenai total member. Mengenai userbar Indoupload.NET dapat dibaca lebih lanjut di sini.

Indoupload.NET RED

Indoupload.NET GREEN

Indoupload.NET BLUE

PHP melalui GD Library memiliki kemampuan untuk membuat dan memanipulasi file gambar (.gif,.png,.jpeg,.wbmp, dan .xmp) baik on the fly (stream langsung ke browser) maupun menulis ke sebuah file baru. Untuk dapat menggunakan fungsi-fungsi ini pastikan terlebih dahulu bahwa PHP yang terinstall di server anda mendukung GD Library, cara mudahnya adalah dengan membuat sebuah file .php yang berisi;

<?php
phpinfo();
?>

Panggil file .php tersebut di browser dan cari keterangan mengenai GD;

gdenables.jpg

Yang akan dilakukan pada contoh ini adalah menghitung total anggota (melalui MySQL), mengambil file asli (.png), membuat file gambar (.png) baru dengan mengoverlay text total anggota, dan menjalankan file php tersebut melalui cron setiap 5 menit. Selain itu juga melakukan konversi file fonts yang ada di windows menjadi file font format php (.gdf) dengan program tambahan.

Menghitung Total Anggota

Buat sebuah file yang berisi fungsi untuk melakukan koneksi dengan database mysql dan melakukan penghitungan, misalkan nama file = menghitunguser.php

<?php
function totalang(){
$link = mysql_connect("serverdbanda", "usernameanda", "passwordanda");
mysql_select_db("namadatabaseanda", $link);
$result = mysql_query("SELECT * FROM namatabelanda", $link);
$num_rows = mysql_num_rows($result);
return $num_rows;
}
?>

Membuat File Gambar

Untuk membuat sebuah file gambar (*.png) dari file lain melalui php pada contoh ini, fungsi bawaan yang digunakan adalah (silahkan eksplorasi lebih lanjut untuk tipe gambar yang lain);

imagecreatefrompng() -> untuk mengambil gambar asal
imagecolorallocate() -> menentukan warna fonts (RGB)
imageloadfont() -> menggunakan font khusus (*gdf)
imagestring()-> mengoverlay text ke atas gambar
imagepng()-> output gambar
imagedestroy()-> free memory yang terasosiasi dengan gambar

File gambar original yangakan dioverlay adalah contohnya;

nama file = indouploadgreen-orig.png

Berikut scriptnya (hasil dari googling dan manual exploring, silahkan dimodifikasi sesusai dengan kebutuhan) ; misalkan diberi nama membuatgambar.php; perhatikan komentar untuk keterangan singkat, keterangan lebih lanjut silahkan dipelajari pada manual PHP;

<?php

//include fungsi mysql
include ('mengitunguser.php');
// hitung total anggota

$totalanggota = totalang();
//path absolute (untuk cron)
$path = '/path/absolute/ke/direkori/anda/';
//text yang akan dioverlay
$string = "+ ".$totalanggota." Members";
//mengambil file original
$im = imagecreatefrompng($path."indouploadgreen-orig.png");
// menentukan warna font
$white = imagecolorallocate($im1, 255, 255, 255);
// memilih font yang akan digunakan (*.gdf)
$font = imageloadfont($path."cg.gdf");
// nama file baru
$outfile= $path."indouploadgreen.png";
//proses overlay (125,2 = kordinat x,y)
imagestring($im, $font, 125, 2, $string, $white);
//menulis ke file baru
imagepng($im,$outfile);
//melepas asosiasi memori
imagedestroy($im);
?>

Script tersebut di atas akan membuat file gambar baru dengan mengoverlay text total member pada file gambar original. Yang hasil akhirnya dapat di lihat di atas.

Font *gdf

Perintah imagestring dapat dilakukan dengan menggunakan font bawaan system anda, juga dapat diganti dengan font lain dengan melakukan konversi ke *.gdf, untuk font format windows dapat digunakan program yang bisa anda peroleh di http://www.wedwick.com/wftopf.exe; atau mirror IIX nya di sini. Pilih font yang hendak digunakan; tentukan ukurannya dan save as gdf.

Cron

Script php pada contoh ini tidak dibuat untuk dapat dioutput langsung ke browser, melainkan untuk dijalankan pada background; untuk itu dibuat cron untuk menjalankan setiap 5 menit;

*/5 * * * * /usr/bin/php /path/absolute/ke/direkori/anda/membuatgambar.php

6 Comments

  1. 000000 says:

    Sebelumnya saya minta maaf , karna OOT nih Om, saya mau tanya knapa Id saya semuanya ilang? apa mungkin saya terlalu banyak ID dan terlalu banyak menyimpan files disitu (mp3)
    Jujur saja saya suka dengan indoupload.net disamping cepat, kita bisa browse member lain, dan setau saya indoupload.net tidak memnghapus files membernya.
    atau saya harus merandom ID biar anda tidak ‘ngeuh’ dengan ID saya? Hehe..
    Manis pahitnya tanggapan ini tetap saya tunggu T_T hikz..

    rgrds

    000000
    000001
    000002
    000003
    000004
    000005
    000006

  2. Tajid Yakub says:

    ^^ Sudah saya tanggapi via Japri :D

  3. kykok says:

    Makasiih Om, duh jd ga enak ngrepoottinn ^^

  4. funkshit says:

    wew.. tiap 5 menit yach . ..
    gambar yang ke load bakalan sering dapet dari cache ngga nich ?

  5. Tajid Yakub says:

    ^^ Kl dari sisi server nya sih gak ada cache.. kemungkinan kalau ada cache di sisi browser / klien ..

  6. risma says:

    maaf mw tny kalo konversi dari gambar ke text gimana ya caranya?
    gambarnya dari capture webcam

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CommentLuv Enabled