PHP의 imageconvolution() 함수는 이미지에 컨볼루션(convolution) 커널을 적용하는 함수입니다. 이 함수를 활용하면 이미지 선명도 향상(샤프닝), 흐림 효과(블러), 엠보싱 등 다양한 이미지 필터 효과를 손쉽게 구현할 수 있습니다.
구문
bool imageconvolution (img, matrix, div, offset)
매개변수
img: imagecreatetruecolor() 함수 등으로 생성한 이미지 리소스입니다.
matrix: 3x3 크기의 컨볼루션 행렬로, float 값 세 개를 담는 배열 세 개로 이루어진 배열입니다.
div: 컨볼루션 연산 결과의 제수(divisor)로, 주로 정규화(normalization) 목적으로 사용됩니다.
offset: 색상 오프셋으로, 계산된 색상 값에 추가됩니다.
반환값
imageconvolution() 함수는 성공 시 true를, 실패 시 false를 반환합니다.
예제
다음은 imageconvolution() 함수를 사용한 기본적인 예제입니다.
<?php
$img = imagecreatefromgif('https://www.tutorialspoint.com/images/html.gif');
$arr = array(array(2, 0, 1), array(-1, -1, 0), array(0, 0, -1));
imageconvolution($img, $arr, 1, 127);
header('Content-Type: image/png');
imagepng($img, null, 9);
?>
출력 결과
위 코드를 실행하면 아래와 같이 컨볼루션 효과가 적용된 이미지가 출력됩니다.

다른 매개변수 값을 사용한 예제
이번에는 동일한 이미지에 서로 다른 매개변수 값을 적용해 보겠습니다. 행렬(matrix)과 제수(div), 오프셋(offset) 값이 달라지면 출력되는 이미지 효과도 확연히 달라지는 것을 확인할 수 있습니다.
<?php
$img = imagecreatefromgif('https://www.tutorialspoint.com/images/html.gif');
$arr = array(array(3, 2, 1), array(0, 1, 0), array(1, -1, -1));
imageconvolution($img, $arr, 3, 110);
header('Content-Type: image/png');
imagepng($img, null, 9);
?>
출력 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
