Membuat Bentuk (Shape) Dengan php
Header(“Content-Type:image/format”) Sebelum fungsi gambar digunakan, skrip harus mengirimkan header yang memberitahukan format gambar yang akan dibuat. Menggunakan fungsi header() sebagai berikut: Header(“Content-Type:image/format”) Dengan format adalah format gambar yang akan dihasilkan. Format yang didukung diantaranya adalah gif, jpeg, png, dan wbmp. Khusus untuk format wbmp, isi content-type yang harus dituliskan adalah image/vnd.wap.wbmp.
$img = Imagecreate(x,y) Fungsi ImageCreate() Fungsi ini merupakan fungsi yang pertama kali dijalankan dalam membuat gambar. Sintaksnya: $img = Imagecreate(x,y) Parameter x dan y merupakan integer yang menyatakan ukuran lebar dan tinggi gambar dalam pixel, sedangkan $img merupakan variabel yang menyimpan nilainya. Variabel $img digunakan sebagai parameter pada fungsi-fungsi selanjutnya.
Fungsi ImageColorAllocate() Fungsi ini merupakan fungsi yang mengalokasikan sebuah warna dan menyimpannya ke dalam sebuah variabel. Sintaksnya: $warna = ImageColorAllocate($img,r,g,b) Parameter r, g, dan b merupakan integer dengan jangkauan nilai 0 sampai dengan 255 yang menyatakan suatu komposisi warna dalam format RGB (Red Green Blue). Semakin kecil nilainya, semakin gelap warnanya. Variabel $warna untuk selanjutnya akan digunakan sebagai parameter pada fungsi-fungsi selanjutnya.
Fungsi ImageColorDeAllocate() Fungsi ini kebalikan fungsi ImageColorAllocate(), yaitu menghapus sebuah warna yang telah dialokasikan. Sintaksnya: ImageColorDeAllocate($img,$warna)
Fungsi Output Gambar Ada 4 fungsi yang digunakan untuk menghasilkan output ke browser berupa gambar, yaitu ImageGIF, ImageJPEG, ImagePNG, dan ImageWBMP. Penggunannya tergantung dari tipe gambar yang didukung oleh versi PHP yang digunakan. Sintaksnya: ImageGIF($img[,namafile]) ImagePNG($img[,namafile]) ImageWBMP($img[,namafile]) ImageJPEG($img[,namafile[,kualitas]]) Jika parameter namafile disertakan, maka output tidak dikirimkan ke browser, melainkan menjadi sebuah file yang bernama namafile.
ImageFill($img,x,y,$warna) Fungsi ImageFill() Fungsi ini digunakan untuk memberi warna pada “kanvas” yang telah dibuat. Sintaksnya: ImageFill($img,x,y,$warna) Parameter x,y adalah koordinat yang merupakan titik awal pewarnaan, dengan nilai 0,0 terletak pada kiri atas.
Fungsi ImageDestroy() Fungsi ini akan mengosongkan variabel yang digunakan untuk menyimpan gambar. Sintaksnya: ImageDestroy($img)
ImageArc($img, x, y, l, t, aw, ak, $warna) Fungsi ImageArc() Fungsi ini untuk menggambar bentuk elips, baik berupa kurva terbuka maupun kurva tertutup. Sintaksnya : ImageArc($img, x, y, l, t, aw, ak, $warna) Fungsi ini akan menggambar bentuk elips dengan pusat di x,y (0,0 terletak di kiri atas), dengan tinggi t dan lebar l, serta titik awal dan titik akhir diwakili oleh aw dan ak dalam derajat. Dengan demikian, jika t dan l diisi dengan nilai yang sama, kemudian aw dan ak adalah 0 dan 360, maka yang tergambar adalah lingkaran.
<? Header(“Content-Type:image/jpeg”); $img = ImageCreate(300,300); $biru = ImageColorAllocate($img,0,0,255); $hitam = ImageColorAllocate($img,0,0,0); ImageFill($img,0,0,$biru); ImageArc($img,150,150,150,280,0,360,$hitam); ImageJPEG($img); ?>
Dalam contoh-contoh sebelumnya skrip PHP, selalu menggunakan tag-tag HTML, diawali dengan tag <HTML>, <HEAD>, dan seterusnya. berikutnya tag-tag tersebut tidak digunakan, sebab fungsi header pada skrip tersebut memberikan informasi bahwa output yang dikirimkan ke browser memiliki content-type berupa file gambar, bukan file HTML.
imageellipse ($img, x, y, l, t, $warna) Fungsi imageellipse Karena elips digambar mulai dari 0 hingga 360 derajat, maka gambar yang dihasilkan berupa kurva tertutup. Jika elips digambar mulai dari 0 hingga 180 derajat, maka hasilnya adalah setengah elips, atau elips dengan kurva terbuka. Untuk menggambar elips dengan kurva selalu tertutup, dapat menggunakan fungsi ImageEllipse. Sintaksnya: imageellipse ($img, x, y, l, t, $warna) Fungsi ini baru terdapat pada PHP 4.0.6
ImageLine($img,x1,y1,x2,y2,$warna) Fungsi ImageLine() Fungsi ini digunakan untuk menggambar garis. Sintaksnya : ImageLine($img,x1,y1,x2,y2,$warna) Parameter x1,y1 merupakan koordinat awal garis dan x2,y2 merupakan koordinat akhir garis. Fungsi yang mirip dengan ImageLine(), yaitu ImageDashedLine(), yang digunakan untuk menggambar garis putus-putus. Sintaks penggunaannya sama dengan fungsi ImageLine().
<? Header(“Content-Type:image/jpeg”); $img = ImageCreate(300,300); $biru = ImageColorAllocate($img,0,0,255); $merah = ImageColorAllocate($img,255,0,0); $putih = ImageColorAllocate($img,255,255,255); ImageFill($img,0,0,$putih); ImageLine($img,0,0,300,300,$biru); ImageLine($img,0,150,300,150,$merah); ImageJPEG($img); ?>
Fungsi ImageRectangle() Fungsi ini digunakan untuk menggambar empat persegi panjang. Sintaksnya: ImageRectangle($img,x1,y1,x2,y2,$warna) Parameter x1,y1 merupakan titik kiri atas dari empat persegi panjang, sedangkan x2,y2 merupakan titik kanan bawahnya.
<? Header("Content-Type:image/jpeg"); $img = ImageCreate(300,300); $biru = ImageColorAllocate($img,0,0,255); $merah = ImageColorAllocate($img,255,0,0); $putih = ImageColorAllocate($img,255,255,255); ImageFill($img,0,0,$putih); ImageRectangle($img,0,0,200,200,$biru); ImageJPEG($img); ?>
Fungsi ImagePolygon() Fungsi ini digunakan untuk menggambar polygon (kurva banyak sisi atau banyak sudut). Sintaksnya: imagepolygon ($img, array_sudut, jml_sudut, $warna) Parameter array_sudut adalah array yang berisi koordinat dari setiap titik sudut polygon, misalnya $titik[0]=x1, $titik[1]=y1, $titik[2]=x2, $titik[3]=x3, dan seterusnya. Parameter jml_sudut adalah jumlah titik sudut dari polygon yang akan digambar.
<? Header("Content-Type:image/jpeg"); $img = ImageCreate(300,300); $warna = ImageColorAllocate($img,157,25,12); $putih = ImageColorAllocate($img,255,255,255); ImageFill($img,0,0,$putih); $titik[0]=0; $titik[1]=0; $titik[2]=60; $titik[3]=30; $titik[4]=60; $titik[5]=100; $titik[6]=120; $titik[7]=190; $titik[8]=210; $titik[9]=60; ImagePolygon($img,$titik,5,$warna); ImageJPEG($img); ?>
Karena akan dibuat polygon dengan 5 titik sudut, maka diperlukan array dengan 10 komponen, karena setiap titik sudut memerlukan 2 angka sebagai koordinatnya Dengan demikian, contoh gambar polygon tersebut akan mempunyai titik sudut pada (0,0), (60,30), (60,100), (120,190), dan (210,60).
Pada dasarnya alur pemrograman menggambar dengan PHP adalah sebagai berikut: Kirimkan header berisi informasi gambar yang akan dihasilkan. Buatlah sebuah gambar dengan fungsi ImageCreate Alokasikan warna-warna yang akan digunakan Warnailah kanvas dengan salah satu warna yang telah dialokasikan Buatlah gambar dengan fungsi-fungsi gambar Cetak gambar tersebut dengan fungsi output gambar.
Ada beberapa fungsi yang menghasilkan bentuk elips, kotak, serta polygon disertai dengan “isi” warna. Fungsi-fungsi tersebut adalah: imagefilledarc() imagefilledellipse() imagefilledpolygon() imagefilledrectangle()
<?php Header("Content-Type:image/jpeg"); $img = ImageCreate(300,300); $biru = ImageColorAllocate($img,0,0,255); $merah = ImageColorAllocate($img,255,0,0); $putih = ImageColorAllocate($img,255,255,255); ImageFill($img,0,0,$putih); ImageFilledRectangle($img,0,0,200,200,$biru); ImageJPEG($img); ?>
Fungsi ImageString() dan ImageStringUp() Kedua fungsi ini digunakan untuk menggambar sebuah string. Perbedaannya adalah fungsi ImageString() menggambar sebuah string dengan posisi horizontal, sedangkan fungsi ImageStringUp() dengan posisi vertikal. Sintaksnya adalah sebagai berikut: ImageString($img,font,x,y,string,$warna) ImageStringUp($img,font,x,y,string,$warna) Parameter font terdiri dari integer dari 1 sampai dengan 5 untuk mengambil built-in font dengan nilai 1 merupakan font berukuran terkecil dan 5 terbesar, sedangkan parameter string adalah string yang akan dimunculkan sebagai gambar.
<?php Header("Content-Type:image/jpeg"); $img = ImageCreate(300,300); $biru = ImageColorAllocate($img,0,0,255); $merah = ImageColorAllocate($img,255,0,0); $putih = ImageColorAllocate($img,255,255,255); ImageFill($img,0,0,$putih); ImageString($img,5,30,30,"Belajar PHP",$biru); ImageStringUp($img,5,150,150,"Mudah lho",$merah); ImageJPEG($img); ?>
Fungsi ImageFillToBorder() Fungsi ini akan memberi warna pada suatu area sampai batas tertentu. Sintaksnya adalah sebagai berikut: ImageFillToBorder($img,x,y,batas,$warna) Fungsi ini akan memberi warna sesuai parameter $warna dari x,y sampai dengan menemui batas yang disebutkan pada parameter batas. Parameter batas sendiri merupakan sebuah warna.
<?php Header("Content-Type:image/jpeg"); $img = ImageCreate(300,300); $hitam = ImageColorAllocate($img,0,0,0); $biru = ImageColorAllocate($img,0,0,255); $putih = ImageColorAllocate($img,255,255,255); ImageFill($img,0,0,$biru); ImageArc($img,150,150,250,175,0,360,$putih); ImageFillToBorder($img,150,150,$putih,$hitam); ImageJPEG($img); ?>
Fungsi ImageTypes() Fungsi ini digunakan untuk memeriksa tipe gambar apa saja yang didukung oleh PHP pada server yang bersangkutan. Sintaksnya: ImageTypes() Fungsi ini menghasilkan nilai bit yang bersesuaian dengan format gambar yang didukung, yaitu IMG_GIF, IMG_JPG, IMG_PNG, dan IMG_WBMP. Jika ingin diperiksa apakah PHP pada server yang bersangkutan mendukung format JPEG, maka dapat digunakan cara sebagai berikut: <?php if (ImageTypes() & IMG_JPG) { echo "PHP mendukung format JPEG"; } ?>
Fungsi ImageSetPixel() Fungsi ini digunakan untuk menggambar sebuah titik (pixel). Sintaksnya: ImageSetPixel($img,x,y,$warna) Parameter x,y merupakan koordinat dimana titik tersebut akan digambar
Membuat Captcha (Simpan skrip berikut dengan nama captcha) <?php //memulai session session_start(); header("Content-Type: image/jpeg"); //fungsi untuk membuat gambar $image=imagecreate(75, 40); //menentukan warna background ImageFill($image, 0, 0, imagecolorallocate($image, 0, 0, 225)); //biru //menentukan warna text $warnatext=imagecolorallocate($image, 255, 255, 255); //putih //mengenerate angka $angka1=rand(0, 9); $angka2=rand(0, 9); $angka3=rand(0, 9); $angka4=rand(0, 9); $code=$angka1.$angka2.$angka3.$angka4; //menyimpan kode dalam session $_SESSION['captcha']=$code; //menulis kode pada gambar imagestring($image, 5, 18, 12, $code, $warnatext); //output gambar ImageJPEG($image, "", 90); //membebaskan memori imagedestroy($image); ?> Simpan program di atas dengan nama captcha.php
Membuat Form Input Captcha (Simpan skrip berikut dengan nama MainCaptcha) <?php //memulai session session_start(); if(isset($_POST['submit'])) { //membaca kode dari form $code=$_POST['code']; //memanggil kode yang di simpan di session $captcha=$_SESSION['captcha']; //pengecekan kode if($code == $captcha) {echo("Selamat anda benar memasukan angka pada gambar"); } else echo("Maaf, anda salah memasukan angka pada gambar"); } else{ ?> <form action="main.php" method="post"> <img src="captcha.php" alt="captcha"/> <br/> Masukan kode pada gambar<br/> <input type="text" name="code" maxlength="4"/><br/> <input type="submit" name="submit" value="submit"/></form> <?php } Simpan program di atas dengan nama main.php