Membuat Bentuk (Shape) Dengan php • 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. 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. 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) 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. 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 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: 1. Kirimkan header berisi informasi gambar yang akan dihasilkan. 2. Buatlah sebuah gambar dengan fungsi ImageCreate 3. Alokasikan warna-warna yang akan digunakan 4. Warnailah kanvas dengan salah satu warna yang telah dialokasikan 5. Buatlah gambar dengan fungsi-fungsi gambar 6. 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