Sunday 25 May 2008

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.

No comments: