PHP의 imagecopymergegray() 함수는 한 이미지의 일부를 다른 이미지로 복사하면서 회색조(grayscale) 효과를 적용해 병합하는 데 사용됩니다. 워터마크 처리나 이미지 합성 시 유용하게 활용할 수 있습니다.
문법(Syntax)
imagecopymergegray(dst_img, src_img, dst_x, dst_y, src_x, src_y, src_w, src_h, pct)
함수 이름에 'gray'가 포함되어 있어 imagecopymerge()와 혼동하기 쉬운데, 이 함수는 복사된 영역을 지정한 비율만큼 회색조로 변환한다는 점이 가장 큰 차이입니다.
매개변수(Parameters)
- dst_im
대상(복사될) 이미지의 링크 리소스를 설정합니다. - src_im
원본(복사할) 이미지의 링크 리소스를 설정합니다. - dst_x
대상 이미지에서 붙여넣을 위치의 x 좌표를 설정합니다. - dst_y
대상 이미지에서 붙여넣을 위치의 y 좌표를 설정합니다. - src_x
원본 이미지에서 복사를 시작할 지점의 x 좌표를 설정합니다. - src_y
원본 이미지에서 복사를 시작할 지점의 y 좌표를 설정합니다. - src_w
복사할 원본 영역의 너비를 설정합니다. - src_h
복사할 원본 영역의 높이를 설정합니다. - pct
회색조 적용 비율을 의미합니다. 0이면 완전한 회색조로 변환되고, 100이면 원본 그대로 유지됩니다.
반환값(Return Value)
imagecopymergegray() 함수는 병합에 성공하면 TRUE, 실패하면 FALSE를 반환합니다.
예제 1: 기본 사용법
다음은 GIF 이미지의 일부를 회색조 비율 60으로 병합하는 예제입니다.
<?php
$destImg = imagecreatefromgif('https://www.tutorialspoint.com/images/html.gif');
$srcImg = imagecreatefromgif('https://www.tutorialspoint.com/images/html.gif');
imagecopymergegray($destImg, $srcImg, 10, 10, 0, 0, 350, 120, 60);
header('Content-Type: image/png');
imagegif($destImg);
imagedestroy($destImg);
imagedestroy($srcImg);
?>
실행 결과
위 코드를 실행하면 복사된 영역이 약 60% 수준의 회색조로 변환되어 대상 이미지에 병합된 결과를 확인할 수 있습니다.
예제 2: 좌표와 비율 변경
이번에는 x, y 좌표와 크기, 그리고 pct 값을 다르게 설정한 예제입니다. pct가 100이므로 회색조 없이 원본 색상 그대로 병합됩니다.
<?php
$destImg = imagecreatefromgif('https://www.tutorialspoint.com/images/html.gif');
$srcImg = imagecreatefromgif('https://www.tutorialspoint.com/images/html.gif');
imagecopymergegray($destImg, $srcImg, 20, 10, 0, 0, 410, 130, 100);
header('Content-Type: image/png');
imagegif($destImg);
imagedestroy($destImg);
imagedestroy($srcImg);
?>
실행 결과
좌표가 (20, 10)으로 이동하고 복사 영역이 커졌으며, pct 값이 100이라 원본 이미지의 색상이 그대로 유지된 채 병합되는 것을 확인할 수 있습니다.
정리
imagecopymergegray()는 imagecopymerge()와 사용법이 거의 동일하지만, 마지막 pct 매개변수가 투명도가 아닌 회색조 변환 정도를 조절한다는 점이 핵심입니다. 이미지 편집 자동화, 워터마크 제작 등 GD 라이브러리를 활용한 이미지 처리 작업에 폭넓게 응용할 수 있습니다.