imagefilter()는 PHP에 내장된 함수로, 이미지에 다양한 종류의 필터를 적용할 때 사용됩니다. GD 라이브러리와 함께 동작하며, 색상 반전, 흑백 변환, 블러, 엠보싱 등 여러 시각 효과를 손쉽게 구현할 수 있습니다.
문법(Syntax)
bool imagefilter(resource $image, int $filtertype, int $arg1, int $arg2, int $arg3, int $arg4)
매개변수(Parameters)
imagefilter() 함수는 총 6개의 매개변수를 받습니다 — $image, $filtertype, $arg1, $arg2, $arg3, $arg4.
$image — 필터를 적용할 대상 이미지 리소스입니다.
$filtertype — 적용할 필터의 종류를 지정하는 정수값입니다.
아래는 사용 가능한 주요 이미지 필터 상수 목록입니다.
IMG_FILTER_NEGATE — 이미지의 모든 색상을 반전시킵니다.
IMG_FILTER_GRAYSCALE — 빨강, 초록, 파랑 성분을 가중 합산하여 이미지를 흑백(그레이스케일)으로 변환합니다.
IMG_FILTER_BRIGHTNESS — 이미지의 밝기를 변경합니다. $arg1로 밝기 수준을 설정하며, 값의 범위는 -255부터 255까지입니다.
IMG_FILTER_CONTRAST — 이미지의 대비(콘트라스트)를 변경합니다. $arg1로 대비 수준을 설정합니다.
IMG_FILTER_COLORIZE — IMG_FILTER_GRAYSCALE과 유사하지만 원하는 색상을 직접 지정할 수 있습니다. $arg1, $arg2, $arg3가 각각 빨강(R), 초록(G), 파랑(B) 값을 나타내며, $arg4는 알파 채널에 사용됩니다. 각 색상 값의 범위는 0부터 255까지입니다.
IMG_FILTER_EDGEDETECT — 윤곽선 검출(edge detection) 필터로, 이미지의 가장자리를 강조합니다.
IMG_FILTER_GAUSSIAN_BLUR — 이미지에 가우시안 블러(Gaussian blur) 효과를 적용합니다.
IMG_FILTER_SELECTIVE_BLUR — 이미지에 선택적 블러(selective blur) 효과를 적용합니다.
IMG_FILTER_EMBOSS — 이미지에 엠보싱(Emboss) 효과를 적용합니다.
IMG_FILTER_MEAN_REMOVAL — 이미지의 잡음을 제거하고 스케치 느낌의 효과를 만듭니다.
IMG_FILTER_SMOOTH — 이미지를 더 부드럽게 만듭니다. $arg1로 부드러움 수준을 설정합니다.
IMG_FILTER_PIXELATE — 이미지에 픽셀화(모자이크) 효과를 적용합니다. $arg1은 블록 크기를, $arg2는 픽셀화 모드를 설정합니다.
IMG_FILTER_SCATTER — 이미지에 산포(scatter) 효과를 적용합니다. $arg1과 $arg2는 효과의 강도를 정의하고, $arg3는 특정 픽셀 색상에만 효과를 적용할 때 사용됩니다.
선택적 인수(arg) 목록
$arg1
IMG_FILTER_BRIGHTNESS — 밝기 수준 지정에 사용됩니다.
IMG_FILTER_CONTRAST — 대비 수준 지정에 사용됩니다.
IMG_FILTER_COLORIZE — 빨강(R) 성분 값 지정에 사용됩니다.
IMG_FILTER_SMOOTH — 부드러움 수준 지정에 사용됩니다.
IMG_FILTER_PIXELATE — 픽셀 단위의 블록 크기 지정에 사용됩니다.
IMG_FILTER_SCATTER — 효과 감소(subtraction) 수준 지정에 사용됩니다.
$arg2
IMG_FILTER_COLORIZE — 초록(G) 성분 값 지정에 사용됩니다.
IMG_FILTER_PIXELATE — 고급 픽셀화 효과 사용 여부를 설정합니다(기본값은 false).
IMG_FILTER_SCATTER — 효과 추가(addition) 수준 지정에 사용됩니다.
$arg3
IMG_FILTER_COLORIZE — 파랑(B) 성분 값 지정에 사용됩니다.
IMG_FILTER_SCATTER — 특정 색상에만 효과를 적용할 때 사용되는 선택적 배열(색상 인덱스 값)입니다.
$arg4
IMG_FILTER_COLORIZE — 알파 채널 값으로, 0부터 127 사이의 값을 가집니다. 0은 완전히 불투명함을, 127은 완전히 투명함을 의미합니다.
반환값(Return Values)
필터 적용에 성공하면 true를 반환하고, 실패하면 false를 반환합니다.
예제 1: COLORIZE 필터로 색조 변경하기
<?php
// 로컬 드라이브 폴더에서 gif 이미지 불러오기
$img = imagecreatefromgif('C:\xampp\htdocs\Images\img39.gif');
// 이미지에 색조(colorize) 필터 적용
imagefilter($img, IMG_FILTER_COLORIZE, 140, 0, 140, 20);
// 결과 이미지 출력
header('Content-type: image/gif');
imagepng($img);
?>
위 코드는 보라색 계열로 색조가 조정된 이미지를 출력합니다.
예제 2: NEGATE 필터로 색상 반전하기
<?php
// 로컬 드라이브 폴더에서 gif 이미지 불러오기
$img = imagecreatefromgif('C:\xampp\htdocs\Images\img39.gif');
// 이미지 색상 반전(negate) 적용
imagefilter($img, IMG_FILTER_NEGATE);
// 결과 이미지 출력
header('Content-type: image/gif');
imagepng($img);
?>
위 코드는 네거티브 필름처럼 색상이 반전된 이미지를 출력합니다.
마무리
PHP의 imagefilter() 함수 하나만으로도 흑백 변환, 색상 반전, 블러, 픽셀화 등 다양한 이미지 편집 기능을 간단한 코드로 구현할 수 있습니다. 웹 서비스에서 썸네일 생성이나 이미지 후처리 자동화가 필요하다면 이 함수를 적극 활용해 보시기 바랍니다.