Archive | php RSS for this section

Fungsi biner

<?php
/*
Bagaimana cara untuk mengubah suatu nilai desimal kedalama nilai biner. Dalam PHP telah ada fungsi bawaan yaitu decbin, namun bagaimana jika kita memasukkan karakter ascii semisal “A” dan ingin tahu berapa nilai binernya? caranya adalah sbb:

Pertama:
kita membutuhkan fungsi ord, yang merupakan fungsi bawaan dari PHP. fungsi ord ini sendiri berfungsi untuk mendapatkan nilai ascii dari suatu karakter, misal nilai ascii dari karakter A adalah 65
ord(“A”);

Kedua:
setelah kita mendapatkan sebuah nilai ascii, dalam hal ini adalah 65 maka, kita ubah angka 65 tersebut menjadi biner dengan fungsi bawaan PHP yaitu decbin(), dengan begitu maka akan di dapatkan nilai binernya adalah 1000001
decbin(65);

Ketiga:
Sebenarnya kita telah mendapatkan nilai biner dari karakter A, tapi ada yang kurang sempurna bukan?! yaph, seharusnya ada 8 angka biner untuk mewakili ascii A, yaitu 01000001. Kemana angka 0 yang paling kiri? memang dengan menggunakan fungsi decbin() maka angka 0 pada bagian paling kiri rangkaian biner akan diabaikan, alias di hilangkan karena memang gag berpengaruh.

Untuk mendapatkan 8 angka biner dengan tanpa menghilangkan angka 0 dibagian paling kiri kita perlu menggunakan fungsi str_pad() yang gunanya untuk menambahkan karakter tertentu pada suatu string sesuai yang kita inginkan. fungsi str_pad() ini sendiri memiliki beberapa
argument yang bisa digunakan seperti STR_PAD_RIGHT, STR_PAD_LEFT, or STR_PAD_BOTH. Argumen pada str_pad() otomatis akan menggunakan str_pad_right jika kita tidak memberikan argument pada fungsi str_pad().

Karena kita akan menambahkan angka 0 pada bagian paling kiri dari 1000001, yang berarti karakter ke delapan dihitung dari kiri. Maka, kita dapat membuat scriptnya sebagai berikut:
str_pad(“1000001″, 8, “0”, STR_PAD_LEFT);
*/
function ascii_biner($char)
{
return str_pad(decbin(ord($char)), 8, “0”, STR_PAD_LEFT);
}

/*
Sekarang kita akan melakukan kebalikan dari fungsi diatas, yaitu bagaimana membuat nilai biner menjadi karakter ascii yang bisa kita kenali.

Pada dasarnya PHP telah menyiapkan semua keperluan kita, jadi gag perlu mikir yang terlalu susah dan rumit.
Pertama:
PHP telah menyiapkan sebuah fungsi yang bernama bindec(), yang berguna untuk mengubah nilai biner menjadi nilai desimal. Dengan ini jika kita memasukkan “01000001”, maka akan menghasilkan keluaran berupa bilangan desimal bernilai 65.
bindec(“01000001″);

kedua:
Nilai desimal yang kita dapatkan tadi merupakan representasi dari suatu karakter ascii, pada awlnya kita tidak tahu representasi karakter apakah angka 65 itu. Kita dapat mengetahuinya dengan fungsi chr(), yang juga merupakan fungsi bawaan dari PHP. Dengan begini maka kita akan tahu bahwa 65 adalah representasi dari karakter “A”.
chr(65);
*/
function biner_ascii($bin)
{
return chr(bindec($bin));
}

/*
Berikut kita akan uji coba fungsi yang telah kita buat tadi, sederhana sekali cara mencobanya.
*/
echo ascii_biner(“A”);
echo “
“;
echo biner_ascii(“01000001″);

?>

Manipulasi image part 4 ~ Final


Bagian terakhir ini, kita akan membuat aplikasi php yang akan mengubah dimensi dari suatu gambar. Seperti yang sebelumnya kita membuat 2 file php, yaitu file masukan/input dan file buat pengolahannya. Ok, kita langsung aja ke code-nya

dimension.php
<div style=”width: 770px; text-align: left;”>
<h1>Dimensi yang anda inginkan</h1>
<p>
<form action=”dimensiCODE.php” enctype=”multipart/form-data” method=”POST” target=”_blank”>
Gambar: <input type=”file” name=”source” value=”cari” size=”40″><br>
Ukuran Baru: lebar= <input type=”text” name=”lebar” value=”320″ size=”4″ maxlength=”4″>
Tinggi= <input type=”text” name=”tinggi” value=”240″ size=”4″ maxlength=”4″><br>
<input type=”submit” value=”Proses”>
</form>
</p>
</div>

gimana? gag perlu dijelasin lagi to :-) sama kok dengan yang sebelumnya. Kita langsung yang file kedua aja. Aku kasih penjelasan langsung di kode programnya aja ya… lebih simple. Maklum, upload lewat hape sih jadi karakternya terbatas.

dimensiCODE.php
<?php
// memberitahu php browser kalau kita akan membuat file gambar dengan tipe jpg/jpeg
header(“Content-type:image/jpeg”);
$image = @imagecreatefromjpeg(“$source”)
// ini akan jalan jika ternyata dukungan untuk library GD tidak ada
or die(“Tidak ada dukungan library GD!!!”);

// dimensi source, yaitu gambar yang kita kirim dari dimension.php akan disimpan di 2 variabel ini.
$lebar_src=imagesX($image);
$tinggi_src=imagesY($image);

// dimensi yg diingkan, ini dibaca dari input integer yang kita berikan di dimension.php.
$lebar_dst = $lebar;
$tinggi_dst = $tinggi;

/*
proses perubahan dimensi akan berlangsung disini.
dengan imagecreatetruecolor kita akan membuat gambar berwarna dengan dimensi yang telah kita tetap kan sebelumnya. parameter dari imagecreatetruecolor (int x_size, int y_size). Kemudian di imagecopyresampled() dengan urutan parameter adalah ( resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w,int dst_h, int src_w, int src_h).
Dengan menggunakan imagecreatetruecolor() dan imagecopyresampled() maka kita bisa menentukan kualitas dari hasil gambar pada imagejpeg(resource image,[string filename],[int quality])
*/
$image_jadi = imagecreatetruecolor ($lebar_dst,$tinggi_dst);
imagecopyresampled($image_jadi,$image,0,0,0,0,$lebar_dst,$tinggi_dst,$lebar_src,$tinggi_src);
imagejpeg($image_jadi,””,60);
imagedestroy($image);
imagedestroy($image_jadi);
?>

Silahkan mencoba, jika server di kampus saya tidak sedang down anda bisa mencoba di http://lab.akakom.org/~asyhadi1/image. Hanya saja beberapa aplikasi tidak bisa dijalankan, dikarenakan di kampus masih menggunakan PHP versi 4.3.0, sedangkan saya menggunakan PHP 5.2.4. Semisal imagecopyresampled(), setahu saya baru ada pada PHP versi 5.

Manipulasi image part 3


Ok, sekarang kita memasuki bagian mengenai menggabungkan 2 buah gambar, gambar yang akan kita olah kali ini adalah gambar dengan tipe file jpg/jpeg. Seperti yang sebelumnya kita lakukan, kita akan membuat 2 buah file php. File pertama untuk masukan user, dan file kedua berfungsi sebagai pengolah dan penampil gambar. Kita akan membuat ini sesederhana mungkin ~padahal aku yg nggak mudeng~, agar lebih mudah dalam prakteknya. File masukan akan kita beri nama image2image.php dan file kedua akan bernama imageCODE.php. Berikut adalah script dari file image2image.php ~saya ambil bagian intinya, yaitu form pengiriman~, file ini secara garis besar sama dengan file text2image.php yang pernah kita buat sebelumnya, perbedaan hanya sedikit sekali! oleh sebab itu tidak saya jelaskan lagi.

image2image.php
<div style=”width: 770px; text-align: left;”>
<h1>Combination between image and image</h1>
<p>
<form action=”imageCODE.php” enctype=”multipart/form-data” method=”POST” target=”_blank”>
Gambar backgroundÇ: <input type=”file” name=”source” value=”cari” size=”40″><br>
Gambar mukaÇÇ: <input type=”file” name=”muka” value=”cari” size=”40″ title=”File type supported jpg or png”><br>
<input type=”submit” value=”Proses”>
</form>
</p>
</div>

File berikutnya adalah imageCODE.php, berikut adalah kode programnya:

//imageCODE.php
<?php
header(“Content-type:image/jpeg”);
$image = @imagecreatefromjpeg(“$source”)
or die(“Tidak ada dukungan library GD!!!”);

Ç$background_color = imagecolorallocate($image,0,0,0);
Ç$text_color = imagecolorallocate($image,255,0,0);
ÇimageTTFtext ($image,12,0,195,25, $text_color,”naruto.ttf”,”from:AsyhadiOne”);
Ç
Ç$implus = imagecreatefromjpeg(“$muka”);
Ç$lebar_implus=imagesX($implus)-1;
Ç$tinggi_implus=imagesY($implus)-1;
Ç$pos_x = imagesX($image)-$lebar_implus-5;
Ç$pos_y = imagesY($image)-$tinggi_implus-5;
Ç
Ç//jika selain gif, maka gunakan cara ini. Sebab jika selain gif tidak bisa otomatis transparan
Ç$warna = imagecolorat($implus,$lebar_implus-1,$tinggi_implus-1);
Çimagecolortransparent($implus,$warna);
Çimagecopymerge($image,$implus,$pos_x,$pos_y,0,0,$lebar_implus,$tinggi_implus,50);
Çimagejpeg($image);
Çimagedestroy($image);
?>

Jika diperhatikan pada awal script, maka tidak terlalu banyak perbedaan dengan file yang pernah kita buat sebelumnya, yaitu textCODE.php. Sehingga dari baris header hingga fungsi imageTTFtext akan kita pass, dan kita masuk ke baris berikutnya yaitu mulai di variabel $implus.
Var $implus ini akan digunakan untuk menampung file kiriman dari image2image.php yang diterima pada var $muka di fungsi imagecreatefromjpeg, $implus ini merupakan var yang menyimpan gambar dan kemudian gambar ini akan menjadi bagian depan/cover dari 2 gambar yang akan kita gabungkan. Sehingga dengan begitu var $source akan menjadi gambar latar belakang/background, sedangkan $implus akan tampil sebagai cover dari $source.
Baris berikutnya adalah pengaturan dari ukuran lebar dan tinggi dari gambar cover, anda bisa mengatur sesuka anda. $pos_x dan $pos_y akan mengatur penempatan dari gambar background pada posisi x dan y. Kita akan menentukan warna dengan imagecolorat(), yang memiliki 3 parameter yaitu resource image, nilai integer x dan nilai integer y. Kemudian baris berikutnya adalah imagecolortransparent() yang memiliki dua buah parameter yaitu resource image dan integer warna, dengan ini maka akan membuat gambar cover menjadi transparan.
Penggabungan gambar akan dilakukan pada fungsi imagecopymerge(), fungsi ini memiliki 9 parameter yaitu:
1. resource destination image,
2. resource source image,
3. integer destination image pada sumbu x,
4. integer destination image pada sumbu y,
5. integer source image pada sumbu x,
6. integer source image pada sumbu y,
7. integer lebar source,
8. integer tinggi source,
9. integer persen kualitas gambar.

Secara garis besar seperti itu, untuk lebih menguasai fungsi-fungsi bawaan yang dipergunakan maka akan lebih baik jika anda membaca manual php dimana anda bisa mendapatkannya di http://www.php.net.
Baik, cukup untuk bagian ketiga ini. Pada hari berikutnya kita akan memasuki file terakhir. InsyaAllah secepatnya.

Manipulasi image part 2


text2image.php
File pertama kita adalah text2image.php, yang merupakan interface masukan dari user, file ini akan mengirimkan gambar yang kemudian akan di proses oleh file textCODE.php. File text2image.php memiliki inti pada form masukan, sehingga kita akan lihat kodenya langsung di bagian inti ini saja.
kode program untuk text2image.php adalah sebagai berikut:

<div style=”width: 770px; text-align: left;”>
<h1>Combination between image and text</h1>
<p>
<form action=”textCODE.php” enctype=”multipart/form-data” method=”POST” target=”_blank”>
Pilih file Gambar : <input type=”file” name=”source” value=”cari” size=”40″><br>
Text yang diinginkan : <input type=”text” name=”teks” value=”AsyhadiOne” maxlength=”30″><br>
Sudut : <input type=”text” name=”sudut” size=”3″ value=”0″ maxlength=”3″><br>
<input type=”submit” value=”Proses”>
</form>
</p>
</div>
Berikut adalah penjelasannya: baris 1-3 merupakan tata letak dari form masukan dengan judul adalah Combination between image and text, baris berikutnya adalah form masukan yang terdiri atas tiga buah input/masukan yaitu: bertype file, dan dua buah bertype text. Form ini nantinya akan dikirim ke halaman textCODE.php dengan method adalah POST. Yang perlu kita perhatikan adalah nama dari tiap input, hal ini dikarenakan nama tersebut nanti akan dibaca oleh variabel yang akan kita buat di textCODE.php. Nama yang kita gunakan adalah source, teks dan sudut. Yang terakhir adalah tombol submit yang akan mengirimkan data ke textCODE.php.
textCODE.php
<?php
header(“Content-type:image/jpeg”);
$image = @imagecreatefromjpeg(“$source”)
or die(“Tidak ada dukungan library GD!!!”);
$background_color = imagecolorallocate($image,0,0,0);
$text_color = imagecolorallocate($image,255,0,0);
$pos_x = imagesX($image)-(imagesX($image)/2);
$pos_y = imagesY($image)-10;
$sudut = $_POST['sudut'];
$text = $_POST['teks'];
imageTTFtext ($image,12,$sudut,$pos_x,$pos_y, $text_color,”naruto.ttf”,$text);
imagejpeg($image);
imagedestroy($image);
?>
Penjelasan untuk kode tersebut adalah:
1. Dengan kode ini kita akan membuat sebuah gambar dengan tipe jpg. Pada baris pertama, pada header kita set untuk memberi tahu bahwa akan dibuat gambar dengan tipe jpg. Jika kita ingin membuat tipe yang lain, semisal png atau gif, maka headernya perlu kita sesuaikan.
2. Berikutnya kita membuat variabel $image, dimana variabel ini akan menampung file gambar yang dikirim dari text2image.php pada variabel $source. Karena kita membuat dari gambar yang sudah jadi dan bertipe jpg, maka fungsi yang digunakan adalah imagecreatefromjpeg.
3. Selanjutnya kita seting untuk warna latar dan warna text yang akan kita gunakan. Fungsi yang akan kita gunakan adalah ImageColorAllocate yang memiliki 4 parameter. Parameter pertama adalah gambar yang sedang kita tangani dan tiga parameter selanjutnya adalah menunjuk pada warna yang akan digunakan yaitu Red, Green dan Blue (RGB). Nilai/value yang digunakan adalah dalam bentuk angka integer antara 0 sampai 255.
4. Pada empat baris berikutnya kita mengatur penempatan dari teks yang kita kirim, sudut yang akan digunakan dan pesan text yang dimasukan oleh user. pertama halaman ini akan menentukan penempatan teks dalam gambar pada sumbu X. saya mencoba untuk menempatkannya tepat mulai dari tengah gambar sehingga kodenya imagesX($image)-(imagesX($image)/2), saya tidak menetapkan angka integer sebab ukuran tiap gambar nantinya saya yakin akan berbeda-beda. kemudian dilanjutkan dengan menentukan penempatan teks pada sumbu Y. kedua proses penempatan tersebut mengambil nilai dari fungsi imagesX untuk sumbu X dan imagesY untuk sumbu Y.variabel $sudut dan $text merupakan variabel yang akan menerima masukkan dari user yang berupa besarnya sudut dan teks yang dimasukkan user. $_POST saya gunakan agar track di halaman url tidak terlihat oleh user, anda pun bisa saja menggunakan $_GET.
5. Pemasukan teks sendiri dilakukan oleh fungsi imageTTFtext(), parameter yang digunakan adalah sebagai berikut:
1. gambar dari user.
2. ukuran dari teks yang diinginkan.
3. sudut penulisan teks yang diinginkan.
4. posisi teks pada sumbu X.
5. posisi teks pada sumbu Y.
6. warna dari teks.
7. nama font yang digunakan, pastikan font ini terletak pada direktori yang sama dengan file yang menggunakannya.
8. teks yang ditulis oleh user akan masuk disini.
setelah itu selesai maka gambar jpg akan ditampilkan menggunakan imagejpeg() ke layar browser. fungsi imagedestroy() digunakan untuk membersihkan server setelah gambar selesai dibuat, biar ga memenuhi sever gitu. Catatan: kode program diatas diasumsikan jika server web anda sudah mendukung FreeType Support enable, sehingga kita bisa menentukan huruf, dan sudut yang akan digunakan. Jika ternyata server web anda tidak mendukung FreeType support, maka anda bisa menggunakan kode sederhana berikut yang menggunakan fungsi imagestring:

imagestring($image,12,5,15,”Teks Sederhana”,$text_color);
imagejpeg($image);
imagedestroy($image);

Demikian untuk bagian yang kedua, tunggu bagian ketiga

Manipulasi image


bismillah,

Beberapa hari ini iseng mengerjakan sekeripsi, beberapa kali mentog mulu dan akhirnya pengen banget nulis di blog mengenai awalnya aku berkenalan dengan PHP dalam hal memanipulasi image. dan ini merupakan dasar yang mengawali proses dalam pembuatan sekeripsi. Walaupun sebenarnya ini tidak dimasukkan dalam sekeripsi <karena emang beda kok, ini kan cuma dasarnya>.

aplikasi ini mengenai:
1. Bagaimana memasukkan teks kedalam image/gambar,
2. Menggabungkan 2 buah gambar/image, dan
3. Mengubah dimensi dari image/gambar.

hal-hal yang perlu diperhatikan adalah sudah ter-install-nya library GD pada PHP anda. Kemudian jika anda ingin menggunakan type ttf teks support, dimana nanti anda bisa mengatur sudut, ukuran dan lain sebagainya pada teks, maka pastikan bahwa FreeType Support sudah anda set value menjadi enabled. Saya sendiri menggunakan PHP 5.2.4 di System Operasi OpenSuse 10.3, namun saya yakin di setiap system operasi akan tetap bisa berjalan asalkan syarat diatas terpenuhi.

Ok, segini dulu pembukaanya. Besok akan kita mulai dengan membuat halaman yang pertama yaitu memasukkan/menggabungkan teks dengan image/gambar, dua file akan kita buat yaitu text2image.php dan textCODE.php yang mana text2image.php akan kita gunakan sebagai media input user dan textCODE.php merupakan halaman yang akan memproses dan menampilkan gambar.

Follow

Get every new post delivered to your Inbox.