Sabtu, 10 September 2011

Membuat Kaleder Dengan php

Kali ini kita akan mencoba membuat kalender hijriah berformat PNG dengan fungsi-fungsi yang telah ada di PHP. Untuk itu kita butuh beberapa persiapan dan perlengkapan yang akan diperlukan nanti.

PERLENGKAPAN:
1. Satu set computer lengkap dengan webserver-nya. Anda bisa gunakan XAMPP.
2. Satu file font untuk fontasinya, saya menggunakan Antropos Freefont (antrf.ttf).
3. Gambar/image dengan desain kalender dengan format PNG.

PERSIAPAN:
1. Beberapa cemilan penunda lapar.
2. Sebungkus rokok diganti saja dengan secangkir gahwa (hot coffe).
3. Pastikan bahwa Anda sudah mengenal dasar-dasar PHP.
Langsung aja gan…
Contoh background kalendernya:
Pertama-tama jalankan webservernya. Bagi yang belum ngerti jalanin webserver, silahkan cari tutorialnya di google. icon smile Membuat Kalender Hijriah Dengan PHP
Kemudian buat file index.php terlebih dahulu dan masukkan script dibawah ini…
<?php
// ===================================================
//
// THIS SOURCE CODE IS FREE FOR USE
// IN THE NAME OF ALLAH SUBHANAHU WA TA'ALA
//
// Author: Sepyan Purnama k(shinjikoo@gmail.com)

// ===================================================
// Konversi masehi ke hijriyah
$tanggal = getdate();
$wday = $tanggal[wday];
$hr = $tanggal[mday];
$bln = $tanggal[mon];
$thn = $tanggal[year];
 if (($thn > 1582) || (($thn == 1582) && ($bln > 10)) || (($thn == 1582) && ($bln == 10) && ($hr > 14))) {
 $zjd=(int)((1461 * ($thn + 4800 + (int)(($bln - 14) / 12))) / 4) + (int)((367 * ($bln - 2 - 12 * ((int)(($bln - 14) / 12)))) / 12) - (int)((3 *
(int)((($thn + 4900 + (int)(($bln - 14) / 12)) / 100))) / 4) + $hr - 32075;
 } else {
 $zjd = 367 * $thn - (int)((7 * ($thn + 5001 + (int)(($bln - 9) / 7))) / 4) + (int)((275 * $bln) / 9) + $hr + 1729777;
 }
$zl=$zjd-1948440+10632;
$zn=(int)(($zl-1)/10631);
$zl=$zl-10631*$zn+354;
$zj=((int)((10985-$zl)/5316))*((int)((50*$zl)/17719))+((int)($zl/5670))*((int)((43*$zl)/15238));
$zl=$zl-((int)((30-$zj)/15))*((int)((17719*$zj)/50))-((int)($zj/16))*((int)((15238*$zj)/43))+29;
$bln=(int)((24*$zl)/709);
$hari=$zl-(int)((709*$bln)/24);
$tahun=30*$zn+$zj-30;
if($bln==1){ $bulan = "Muharram";}
if($bln==2){ $bulan = "Safar";}
if($bln==3){ $bulan = "Rabiul Awal";}
if($bln==4){ $bulan = "Rabiul Akhir";}
if($bln==5){ $bulan = "Jamadil Awal";}
if($bln==6){ $bulan = "Jamadil Akhir";}
if($bln==7){ $bulan = "Rejab";}
if($bln==8){ $bulan = "Syaaban";}
if($bln==9){ $bulan = "Ramadhan";}
if($bln==10){ $bulan = "Syawal";}
if($bln==11){ $bulan = "Zulkaedah";}
if($bln==12){ $bulan = "Zulhijjah";}
if($wday==0) { $namahari = "A H A D"; }
if($wday==1) { $namahari = "I T S N A I N"; }
if($wday==2) { $namahari = "T S A L A T S A"; }
if($wday==3) { $namahari = "A R B I ' A N"; }
if($wday==4) { $namahari = "K H A M I S"; }
if($wday==5) { $namahari = "J U M U ' A H"; }
if($wday==6) { $namahari = "S A B T"; }
// Pembuatan output gambar berformat PNG
header("Content-Type: image/PNG");
$img = imagecreatefromPNG("bghijri.png");
$fontfile = "./antrf.TTF";
$putih = imagecolorallocate($img, 255, 255, 255);
imageTTFText($img, 10, 0, 5, 45, $putih, $fontfile, $namahari);
$hitam = imagecolorallocate($img, 0, 0, 0);
$batas = imageTTFbbox(40, 0, $fontfile, $hari);
$x = imageSX($img)/2 - ($batas[0] + $batas[2] + $batas[4] + $batas[6]) / 4;
imageTTFText($img, 40, 0, $x, 100, $hitam, $fontfile, $hari);
$batas = imageTTFbbox(10, 0, $fontfile, $bulan);
$x = imageSX($img)/2 - ($batas[0] + $batas[2] + $batas[4] + $batas[6]) / 4;
imageTTFText($img, 10, 0, $x, 118, $hitam, $fontfile, $bulan);
$tahun = $tahun . " H";
$batas = imageTTFbbox(10, 0, $fontfile, $tahun);
$x = imageSX($img)/2 - ($batas[0] + $batas[2] + $batas[4] + $batas[6]) / 4;
imageTTFText($img, 10, 0, $x, 133, $hitam, $fontfile, $tahun);
imagePNG($img);
imagedestroy($img);
?>
Code diatas akan menghasilkan gambar berformat PNG. Jika Anda ingin merubah formatnya, Anda bisa mengganti sebagian code diatas. Seperti contoh “Content-Type: image/PNG” diganti ke format GIF menjadi “Content-Type: image/GIF”, atau ke format JPG menjadi “Content-Type: image/JPEG”.
Dan pastikan file gambar untuk background dan fontasinya udah Anda siapkan dalam satu folder dengan file index.
Jalankan, kemudian lihat hasilnya…

Sumber:3tnic.wordpress.com

0 komentar:

Posting Komentar