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

PHP imagefilltoborder() 함수로 특정 색상 영역 채우기 완벽 가이드


imagefilltoborder()는 PHP에 내장된 GD 라이브러리 함수로, 지정한 경계 색상(border)을 기준으로 특정 색상으로 플러드 필(flood fill, 영역 채우기)을 수행합니다. 채우기의 시작 좌표는 (x, y)이며, 이미지의 기준점인 왼쪽 상단은 (0, 0)입니다. 이 함수는 경계 색상을 만나기 전까지 연결된 영역 전체를 지정한 색상으로 채워 넣습니다.

문법(Syntax)

bool imagefilltoborder(resource $image, int $x, int $y, int $border, int $color)

매개변수(Parameters)

imagefilltoborder() 함수는 다섯 개의 매개변수를 받습니다: $image, $x, $y, $border, $color.

  • $image − 작업 대상이 되는 이미지 리소스입니다. imagecreatetruecolor()나 imagecreatefromgif() 같은 함수로 생성한 값입니다.

  • $x − 채우기를 시작할 x좌표를 지정합니다.

  • $y − 채우기를 시작할 y좌표를 지정합니다.

  • $border − 경계(테두리) 색상을 지정합니다. 이 색상을 만나면 채우기가 중단됩니다.

  • $color − 영역을 채울 실제 색상을 지정합니다.

반환값(Return Values)

성공 시 true를 반환하고, 실패 시 false를 반환합니다.

예제 1: GIF 이미지 배경 채우기

<?php
   // 로컬 드라이브 폴더에서 GIF 이미지를 불러옵니다.
   $img = imagecreatefromgif('C:\xampp\htdocs\Images\img39.gif');

   // 경계 색상과 채우기 색상을 생성합니다.
   $borderColor = imagecolorallocate($img, 0, 200, 0);
   $fillColor = imagecolorallocate($img, 122, 122, 122);

   (0, 0) 위치부터 경계까지 채웁니다.
   imagefilltoborder($img, 0, 0, $borderColor, $fillColor);

   // 결과 이미지를 출력합니다.
   header('Content-type: image/gif');
   imagepng($img);
?>

실행 결과

imagefilltoborder() 함수 적용 전 GIF 이미지:

PHP imagefilltoborder() 함수로 특정 색상 영역 채우기 완벽 가이드

imagefilltoborder() 함수 적용 후 GIF 이미지:

PHP imagefilltoborder() 함수로 특정 색상 영역 채우기 완벽 가이드

위 예제에서는 초록색(RGB 0, 200, 0)을 경계 색상으로 설정하고, 회색(RGB 122, 122, 122)으로 영역을 채웠습니다. 시작점 (0, 0)에서 출발하여 경계 색상을 만날 때까지 인접한 픽셀들이 모두 회색으로 변경된 것을 확인할 수 있습니다.

예제 2: 타원 내부를 색상으로 채우기

<?php
   // 새 이미지를 생성하고 배경을 회색으로 설정합니다.
   $img = imagecreatetruecolor(700, 500);
   imagefilledrectangle($img, 0, 0, 500, 500, imagecolorallocate($img, 122, 122, 122));

   // 검은색 테두리를 가진 타원을 그립니다.
   imageellipse($img, 300, 300, 300, 300, imagecolorallocate($img, 0, 0, 0));

   // 경계 색상과 채우기 색상을 파란색 계열로 설정합니다.
   $border = imagecolorallocate($img, 0, 0, 0);
   $fill = imagecolorallocate($img, 0, 0, 255);

   // 타원 내부를 채웁니다.
   imagefilltoborder($img, 300, 300, $border, $fill);

   // 결과 이미지를 출력하고 메모리를 해제합니다.
   header('Content-type: image/gif');
   imagepng($img);
   imagedestroy($img);
?>

실행 결과

PHP imagefilltoborder() 함수로 특정 색상 영역 채우기 완벽 가이드

이 예제에서는 검은색 테두리로 그린 타원의 중심점 (300, 300)을 시작점으로 지정했습니다. imagefilltoborder()가 검은 테두리를 경계로 인식하고, 타원 내부만 파란색(RGB 0, 0, 255)으로 채운 결과를 볼 수 있습니다.

정리

imagefilltoborder()는 imagefill()과 유사하지만, 결정적인 차이가 있습니다. imagefill()은 시작점과 동일한 색상의 영역만 채우는 반면, imagefilltoborder()는 지정한 경계 색상을 만날 때까지 색상과 관계없이 채웁니다. 따라서 복잡한 도형이나 다양한 색상이 섞인 영역을 한 번에 처리해야 할 때 매우 유용합니다. 작업이 끝난 후에는 imagedestroy()를 호출하여 메모리를 해제하는 것이 좋은 습관입니다.