Manipulasi Image dengan PHP
October 6th, 2008 | by rosihanari |
Cetak Artikel
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
<?php
// membuat image negatif
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg('faza.jpg');
imagefilter($image, IMG_FILTER_NEGATE);
imagejpeg($image);
?>
Hasilnya adalah:

grayscale.php
<?php
// membuat grayscale image
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg('faza.jpg');
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagejpeg($image);
?>
Hasilnya adalah:

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

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

colorize.php
<?php
// mengatur skala warna RGB
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg('faza.jpg');
imagefilter($image, IMG_FILTER_COLORIZE, 10, 100, 20);
imagejpeg($image);
?>
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
<?php
// image dari hasil edge detection
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg('faza.jpg');
imagefilter($image, IMG_FILTER_EDGEDETECT);
imagejpeg($image);
?>
Hasilnya adalah:

emboss.php
<?php
// image dengan efek emboss
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg('faza.jpg');
imagefilter($image, IMG_FILTER_EMBOSS);
imagejpeg($image);
?>
Hasilnya adalah:

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

sketch.php
<?php
// image dengan efek sketch
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg('faza.jpg');
imagefilter($image, IMG_FILTER_MEAN_REMOVAL);
imagejpeg($image);
?>
Hasilnya adalah:

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

Anda dapat pula menggabung beberapa proses filtering dalam satu script, misalnya
grayscale-sketch.php
<?php
// mengkonversi image ke grayscale lalu memberikan efek sketch
header("Content-type: image/jpeg");
$image = imagecreatefromjpeg('faza.jpg');
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagefilter($image, IMG_FILTER_MEAN_REMOVAL);
imagejpeg($image);
?>
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)
Selamat mencoba, mudah-mudahan ada manfaatnya dan nantikan tips dan trik web programming selanjutnya di blog ini.
| Baca Juga Artikel Terkait |
Kata kunci: image php - image processing - PHP - php image -




keren mas..
saya baru kalo php bisa manipulasi images
seperti di atas
Assalamu’alaikum..
Pak, penggunaan
header(“Content-type: image/jpeg”);
itu apa maksudnya untuk image tipe jpeg saja? Lalu bagaimana dengan image tipe yang lain? Bagaimana misalkan image yang digunakan lebih dari satu tipe?
Mohon dijelaskan Pak, sebelumnya terimakasih..
Wassalamu’alaikum..
@trihas: bisa juga untuk jenis image yang lain mas…
dibagian akhir sebelum komentar diatas (pada tiap halaman blog anda ini), itu ada tampilan dari beberapa foto yang di buat dalam album, gimana ya mas cara bikinnya….?
@mustadi: wah script blognya saya gak buat mas, ini sudah dari sononya alias yang buat programmer WordPress nya
image kalo biar tampilannya di “crop” gimana mas
mas, mau tanya. apa bisa script ini diimplementasikan di perulangan dengan data dari database. atau script ini hanya untuk satu photo
@taroom: perulangan gimana maksudnya mas?
gallery dibuat dengan perulangan while. trus gimana caranya agar salah satu script diatas misalnya yang effect GREYSCALE bekerja pada gallery photo tersebut.