Jumat, 11 Mei 2012

Ubah Foto dengan PHP

Istilah ‘Manipulasi’ di sini, bukanlah manipulasi yang bersifat negatif :-) . Istilah ini terkait dengan pengolahan image untuk menghasilkan image baru. Yang dimaksud dalam manipulasi image di sini adalah ‘image filtering’. Dalam dunia image processing, tentu hal ini bukanlah hal yang baru lagi. Nah… pada artikel kali ini akan dibahas bagaimana cara memanipulasi image dengan PHP yang dapat dilakukan dengan sangat mudah.

Untuk memanipulasi image dengan PHP, telah tersedia function imagefilter(). Apabila Anda masih menggunakan PHP 4, maka Anda tidak akan menemukannya karena function ini hanya ada di PHP 5. Oleh karena itu segeralah bermigrasi ke PHP 5 bila masih menggunakan PHP 4 :-) .
Dengan menggunakan imagefilter(), Anda bisa melakukan filtering image seperti mengatur tingkat brightness, kontras, mengubah image ke bentuk negatif, memberikan efek emboss, memberikan efek sketch, mengubah true color image ke grayscale, melakukan proses edge detection, memperhalus image (smoothing), serta memberikan efek blur.
Secara umum, sintaks dari imagefilter() adalah sebagai berikut:
imagefilter(image asli, tipe filtering, [argumen])
Untuk tipe filtering yang dapat Anda gunakan adalah:
- IMG_FILTER_NEGATE, digunakan untuk membuat image negatif
- IMG_FILTER_GRAYSCALE, mengkonversi ke grayscale
- IMG_FILTER_BRIGHTNESS, mengatur tingkat brightness
- IMG_FILTER_CONTRAST, mengatur tingkat kontras
- IMG_FILTER_COLORIZE, mengatur skala warna RGB
- IMG_FILTER_EDGEDETECT, menghasilkan image dari proses edge detection
- IMG_FILTER_EMBOSS, memberikan efek timbul (emboss)
- IMG_FILTER_GAUSSIAN_BLUR, memberikan efek blur (Gaussian Blur)
- IMG_FILTER_SELECTIVE_BLUR, memberikan efek blur (Selective Blur)
- IMG_FILTER_MEAN_REMOVAL, memberikan efek sketch
- IMG_FILTER_SMOOTH, memperhalus image
Dalam hal ini, parameter ‘argumen’ sifatnya adalah optional.
Selanjutnya bagaimana cara penggunaannya? Ini dia contohnya. Dalam contoh ini, saya ambil sampel sebuah image berformat JPG dari foto anak saya Faza :-)
Foto Asli

negatif.php

1.
2.// membuat image negatif
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_NEGATE);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

grayscale.php
1.
2.// membuat grayscale image
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_GRAYSCALE);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

brightness.php
1.
2.// mengatur tingkat brightness
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_BRIGHTNESS, 50);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

contrast.php
1.
2.// mengatur tingkat contrast
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_CONTRAST, 10);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

colorize.php
1.
2.// mengatur skala warna RGB
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_COLORIZE, 10, 100, 20);
6.imagejpeg($image);
7.?>
Pada imagefilter() di atas, nilai 10 pada parameter tersebut mengatur skala untuk warna merah (RED), 100 untuk hijau (GREEN), dan 20 untuk biru (BLUE).
Hasilnya adalah:

edgedetection.php
1.
2.// image dari hasil edge detection
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_EDGEDETECT);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

emboss.php
1.
2.// image dengan efek emboss
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_EMBOSS);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

gaussian.php
1.
2.// image dengan efek Gaussian blur
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

sketch.php
1.
2.// image dengan efek sketch
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_MEAN_REMOVAL);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

smooth.php
1.
2.// mengatur tingkat kehalusan image
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_SMOOTH, 25);
6.imagejpeg($image);
7.?>
Hasilnya adalah:

Anda dapat pula menggabung beberapa proses filtering dalam satu script, misalnya
grayscale-sketch.php
1.
2.// mengkonversi image ke grayscale lalu memberikan efek sketch
3.header("Content-type: image/jpeg");
4.$image = imagecreatefromjpeg('faza.jpg');
5.imagefilter($image, IMG_FILTER_GRAYSCALE);
6.imagefilter($image, IMG_FILTER_MEAN_REMOVAL);
7.imagejpeg($image);
8.?>
Hasilnya adalah:

OK… that’s it, beberapa jenis filtering yang dapat Anda lakukan dengan function imagefilter(). Pada contoh ini, source image berasal dari sebuah file. Nah.. Anda dapat pula mengembangkan script untuk filtering image yang berasal dari database.
Oya, Anda dapat pula mendownload semua script di atas (tidak termasuk foto aslinya ya…, silakan gunakan foto Anda sendiri yang keren he..3x)
Download Script
Selamat mencoba, mudah-mudahan ada manfaatnya dan nantikan tips dan trik web programming selanjutnya di blog ini.

Artikel Terkait


EmoticonEmoticon