Page Nav

HIDE

Grid

GRID_STYLE

Breaking News

latest

Membuat Gambar Dengan PHP

Sebagai langkah awal periksalah dahulu versi PHP yang Anda gunakan apakah telah memiliki kemampuan untuk menggambar. Gunakan fungsi phpinf...


Sebagai langkah awal periksalah dahulu versi PHP yang Anda gunakan apakah telah memiliki kemampuan untuk menggambar. Gunakan fungsi phpinfo() untuk memeriksanya. Sekedar mengingatkan, cara menggunakan fungsi phpinfo() adalah sebagai berikut: buatlah sebuah file php yang hanya berisi skrip berikut ini:
<? phpinfo(); ?>
Untuk pengguna Linux, jalankan file tersebut lalu periksalah bagian configure command apakah terdapat perintah-perintah berikut:
--with-gd
--with-jpeg-dir=[namadirektori]
--with-png-dir=[namadirektori]
Jika ada, maka PHP yang Anda gunakan dapat digunakan untuk menghasilkan gambar  berekstensi .jpg atau .png. Anda juga dapat memeriksa di bagian gd dan periksalah apakah GD Support, JPG Support, dan PNG Support semuanya enabled.
 
Seandainya semua tidak ada, maka Anda harus menginstall sendiri library-library tambahan yang diperlukan. Setidaknya ada dua library tambahan yang diperlukan, yaitu jpeg-6b dan gd library. Berikut adalah langkah-langkah instalasinya:

Instalasi jpeg-6b
Untuk mendapatkan jpeg-6b, Anda dapat mendownloadnya dari ftp://ftp.uu.net/graphics/jpeg/. Downloadlah file yang bernama jpegsrc.v6b.tar.gz. Setelah itu langkah yang harus dilakukan adalah sebagai berikut:
# gunzip jpegsrc.v6b.tar.gz
# tar –xvf jpegsrc.v6b.tar
# cd [direktori jpeg-6b]
# ./configure
# make
# make test
Jika setelah make test tidak ada kesalahan yang muncul, maka lakukan hal ini:
# make install
Langkah instalasi ini dilakukan pada distribusi RedHat 7.1. Untuk distribusi yang lain cara instalasinya sama, hanya saja bila perlu mungkin harus memodifikasi file Makefile. Untuk lebih lengkapnya Anda bisa merujuk pada file install.doc yang terletak di direktori jpeg-6b.

Instalasi gd library
Untuk mendapatkan gd library, Anda dapat mendownloadnya dari http://www.boutell.com/gd/. Sedapat mungkin downloadlah versi terbarunya. Langkah instalasinya adalah sebagai berikut:
# gunzip gd-x.x.x.tar.gz
# tar –xvf gd-x.x.x.tar
# cd [direktori gd-x.x.x]
Pada distribusi Linux RedHat (dan mungkin juga distribusi lainnya), kemungkinan besar Anda harus memodifikasi file Makefile sebagai berikut:
  • Pada baris yang bertuliskan LIBS=-lgd -lpng -lz -lm harus Anda tambahkan -ljpeg menjadi LIBS=-lgd -lpng -lz -lm -ljpeg.
  • Pada baris yang bertuliskan LIB_DIRS, gantilah LIBDIRS=-L. -L/usr/local/lib -L/usr/lib/X11 -L/usr/X11R6/lib menjadi IBDIRS=-L. -L/(direktori gd-x.x.x) -L/usr/lib/X11 -/usr/X11R6/lib
  •  Pada baris yang bertuliskan INSTALL_INCLUDE =/usr/local/include gantilah direktori /usr/local/include dengan direktori gd-x.x.x.
Setelah itu instalasi dilakukan dengan cara berikut:
# make
# make install
Untuk distribusi yang lain, silakan Anda merujuk pada file index.html yang terletak pada direktori gd-x.x.x.

Konfigurasi Ulang PHP
Setelah kedua paket tambahan tersebut, Anda harus mengkonfigurasi ulang PHP Anda dengan cara sebagai berikut:
# cd [direktori php Anda]
# ./configure -–with-apxs --with-gd=direktori_gd --with-jpeg-dir=direktori_jpeg-6b
# make
# make install
Sesuaikan direktori_gd dan direktori_jpeg-6b dengan direktori tempat Anda menginstall kedua library tersebut. Setelah PHP dikonfigurasi ulang, Anda bisa menggunakan fungsi phpinfo() untuk melihat apakah konfigurasi ulang ini berhasil dan melihat tipe-tipe gambar yang didukung.

Untuk diperhatikan, Anda dapat melakukan hal di atas apabila dahulu Anda menginstall PHP dari source codenya, bukan dari rpmnya.

Bagi para pengguna Windows, umumnya kemampuan menggambar PHP dapat diperoleh cukup dengan menghilangkan tanda ; (uncoment) di depan pernyataan extension=php_gd.dll di file php.ini. Dan hal ini juga baru dapat dilakukan apabila Anda menginstall paket distribusi PHP for Windows yang lengkap, bukan dari installernya. Saya memang sering menyarankan untuk tidak mengedit file php.ini, namun kali ini memang terpaksa harus dilakukan agar PHP Anda memiliki kemampuan untuk menggambar. Jika nantinya Anda ingin mengupload aplikasi Anda ke web server, periksalah dahulu apakah web server tersebut memiliki dukungan untuk menggambar dengan PHP. Lagi-lagi Anda dapat menggunakan fungsi phpinfo() untuk memeriksanya.

Nah, setelah berbagai perangkat yang diperlukan telah diinstall, maka PHP kini dapat digunakan untuk menggambar. Untuk dapat menggambar dengan PHP, Anda harus mengenal fungsi-fungsi gambar di PHP. PHP menyediakan beberapa fungsi yang digunakan untuk “menggambar”, baik untuk membuat gambar garis, kurva, huruf, warna, dan lain-lain. Sebelum fungsi gambar digunakan, mula-mula skrip harus mengirimkan header yang memberitahukan format gambar yang akan dibuat. Untuk pengiriman header digunakan 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-fungsi gambar tersebut di antaranya adalah:

Fungsi ImageCreate()
Fungsi ini merupakan fungsi yang pertama kali harus dijalankan dalam membuat sebuah gambar. Sintaksnya adalah sebagai berikut:
$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. Fungsi ini dapat dibayangkan sebagai fungsi yang menyiapkan kanvas dengan ukuran x kali y. Variabel $img untuk selanjutnya akan digunakan sebagai parameter pada fungsi-fungsi selanjutnya.

Fungsi ImageColorAllocate()
Fungsi ini merupakan fungsi yang mengalokasikan sebuah warna dan menyimpannya ke dalam sebuah variabel. Sintaksnya adalah sebagai berikut:
$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. Dengan demikian, komposisi warna 0, 0, 0 merupakan warna hitam dan komposisi warna 255, 255, 255 merupakan warna putih. Variabel $warna untuk selanjutnya akan digunakan sebagai parameter pada fungsi-fungsi selanjutnya.

Fungsi ImageColorDeAllocate()
Fungsi ini merupakan fungsi yang berkebalikan dengan fungsi ImageColorAllocate(), atau dengan kata lain menghapus sebuah warna yang telah dialokasikan. Sintaksnya adalah sebagai berikut:
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 Anda gunakan. Sintaksnya adalah sebagai berikut:
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 adalah sebagai berikut:
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 adalah sebagai berikut:
ImageDestroy($img)
OK, fungsi-fungsi dasar untuk menggambar telah diberikan. Pada artikel selanjut kita akan belajar lebih jauh dengan mempelajari fungsi-fungsi yang digunakan untuk menghasilkan gambar garis, lingkaran, polygon, dan lain-lain.
-----

Pada artikel sebelumnya fungsi-fungsi dasar untuk menggambar telah kita pelajari. Dengan fungsi-fungsi dasar tersebut ibaratnya Anda sedang mempersiapkan kanvas beserta peralatan gambarnya. Nah, kali ini kita belajar lebih jauh dengan mempelajari fungsi-fungsi yang digunakan untuk menggambar. Inilah fungsi-fungsi untuk menggambar tersebut.
Fungsi ImageArc()
Fungsi ini merupakan fungsi yang digunakan untuk menggambar bentuk elips, baik berupa kurva terbuka maupun kurva tertutup. Sintaksnya adalah sebagai berikut:
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. Berikut ini akan diberikan contoh untuk menggambar elips.

<?
Header(“Content-Type:image/jpeg”);
$img = ImageCreate(300,300);
$biru = ImageColorAllocate($img,0,0,255);
$putih = ImageColorAllocate($img,255,255,255);
ImageFill($img,0,0,$putih);
ImageArc($img,150,150,150,280,0,360,$biru);
ImageJPEG($img);
?>
Untuk diperhatikan, selama ini dalam memberikan contoh-contoh skrip PHP, selalu menggunakan tag-tag HTML, diawali dengan tag <HTML>, <HEAD>, dan seterusnya. Namun kali ini 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.
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. Berikut ini akan diberikan contoh untuk menggambar elips.
<?
Header(“Content-Type:image/jpeg”);
$img = ImageCreate(300,300);
$biru = ImageColorAllocate($img,0,0,255);
$putih = ImageColorAllocate($img,255,255,255);
ImageFill($img,0,0,$putih);
ImageArc($img,150,150,150,280,0,360,$biru);
ImageJPEG($img);
?>
Untuk diperhatikan, selama ini dalam memberikan contoh-contoh skrip PHP, selalu menggunakan tag-tag HTML, diawali dengan tag <HTML>, <HEAD>, dan seterusnya. Namun kali ini 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.
Karena elips tersebut digambar mulai dari 0 hingga 360 derajat, maka gambar yang dihasilkan akan berupa kurva tertutup. Jika misalnya 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, Anda dapat menggunakan fungsi ImageEllipse. Sintaksnya adalah sebagai berikut:
imageellipse ($img, x, y, l, t, $warna)
Fungsi ini baru terdapat pada PHP 4.0.6 dan membutuhkan GD 2.0.2 atau sesudahnya. Library ini dapat Anda dapatkan di http://www.boutell.com/gd.

Fungsi ImageLine()
Fungsi ini digunakan untuk menggambar garis. Sintaksnya adalah sebagai berikut:
ImageLine($img,x1,y1,x2,y2,$warna)
Parameter x1,y1 merupakan koordinat awal garis dan x2,y2 merupakan koordinat akhir garis. Berikut akan diberikan contoh menggambar garis.
<?
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);
?>
Ada sebuah fungsi yang mirip dengan ImageLine(), yaitu ImageDashedLine(), yang digunakan untuk menggambar garis putus-putus. Sintaks penggunaannya sama persis dengan fungsi ImageLine().
Fungsi ImageRectangle()
Fungsi ini digunakan untuk menggambar empat persegi panjang. Sintaksnya adalah sebagai berikut:
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. Berikut akan diberikan contoh menggambar empat persegi panjang.
<?
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 adalah sebagai berikut:
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. Berikut akan diberikan contoh menggambar polygon.
<?
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). Dari contoh-contoh tersebut dapat Anda lihat bahwa pada dasarnya alur pemrograman menggambar dengan PHP cukup sederhana. Alur pemrogramannya adalah sebagai berikut:
  • Pertama kirimkan header berisi informasi gambar yang akan dihasilkan.
  • Kedua buatlah sebuah gambar dengan fungsi ImageCreate
  • Ketiga alokasikan warna-warna yang akan digunakan
  • Keempat warnailah kanvas dengan salah satu warna yang telah dialokasikan
  • Kelima buatlah gambar dengan fungsi-fungsi gambar yang akan kita pelajari tadi.
  • Terakhir “cetak” gambar tersebut dengan fungsi output gambar.

Nah selamat mencoba untuk melihat hasilnya.
-----

Bagian ini merupakan bagian akhir dari sesi membuat gambar dengan PHP. Sebenarnya diluar fungsi-fungsi yang nanti akan diberikan masih banyak lagi fungsi-fungsi menggambar dengan PHP, tugas anda untuk mencari dan mengembangkan lebih lanjut. Jika Anda benar-benar berniat mempelajarinya Anda dapat merujuk sendiri pada PHP documentation yang dapat Anda download di www.php.net.
Nah, pada artikel sebelumnya Anda telah belajar menggambar beberapa bentuk seperi elips, garis, kotak, dan polygon dengan fungsi ImageArc, ImageLine, ImageRectangle, dan ImagePolygon. Ada beberapa fungsi yang penggunaannya mirip dan menghasilkan bentuk elips, kotak, serta polygon juga namun  kali ini bentuk-bentuk tersebut tidak “kosong” melainkan disertai dengan “isi” warna.  Fungsi-fungsi tersebut adalah:
imagefilledarc()
imagefilledellipse()
imagefilledpolygon()
imagefilledrectangle()
Untuk fungsi imagefilledarc() dan imagefilledellipse() baru dikenal pada PHP 4.0.6 dan versi-versi yang lebih tinggi dan memerlukan library GD 2.0.1 atau lebih. Pada prinsipnya penggunaan fungsi-fungsi ini sama dengan penggunaan fungsi-fungsi yang diberikan minggu lalu. Berikut adalah salah satu contohnya:
<?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);
?>
Skrip ini menghasilkan gambar kotak yang berwarna biru, bukan hanya rusuknya yang berwarna biru tetapi seluruhnya berwarna biru.
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() menggambar sebuah string 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. Berikut akan diberikan contoh menggambar string.
<?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. Berikut akan diberikan contoh penggunaannya.

<?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);
?>
Pada contoh ini, kanvas akan diberi warna biru, kemudian digambar sebuah elips berwarna putih. Lalu didalamnya akan diberi warna hitam sampai warna hitam tersebut menemui batasnya, yaitu warna putih. Jika koordinat titik awal berada di dalam elips, maka warna hitam akan memenuhi elips, jika titik awal berada di luar elips, maka warna hitam akan memenuhi kanvas yang diluar bidang elips.
Fungsi ImageTypes()
Fungsi ini digunakan untuk memeriksa tipe gambar apa sajakah yang didukung oleh PHP pada server yang bersangkutan. Sintaksnya adalah sebagai berikut:
ImageTypes()
Fungsi ini akan 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 adalah sebagai berikut:
ImageSetPixel($img,x,y,$warna)
Parameter x,y merupakan koordinat dimana titik tersebut akan digambar, selamat mencoba dan terus kembangkan kreativitas Anda.

2 komentar

  1. Terima kasih infonya..
    Tapi ada yang lebih simpel g??
    Hehe.. maaf masih pemula..

    BalasHapus
  2. downloadcyber.byethost31.com jika anda ingin belajar php dan membuat website klunjungi website ini

    BalasHapus