Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP imagefilter() 함수로 이미지에 필터 적용하는 방법 완벽 가이드

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() 함수 하나만으로도 흑백 변환, 색상 반전, 블러, 픽셀화 등 다양한 이미지 편집 기능을 간단한 코드로 구현할 수 있습니다. 웹 서비스에서 썸네일 생성이나 이미지 후처리 자동화가 필요하다면 이 함수를 적극 활용해 보시기 바랍니다.