imagefilledarc() 함수는 PHP의 내장 함수로, 부분 호(partial arc)를 그린 뒤 지정한 스타일대로 채우는 기능을 제공합니다. 특히 원형 차트(파이 차트)를 만들 때 유용하게 활용됩니다.
문법
bool imagefilledarc($image, $cx, $cy, $width, $height, $start, $end, $color, $style)
매개변수
imagefilledarc() 함수는 $image, $cx, $cy, $width, $height, $start, $end, $color, $style 총 아홉 개의 매개변수를 받습니다.
$image − imagecreatetruecolor()와 같은 이미지 생성 함수가 반환하는 이미지 리소스입니다. 이 함수로 이미지의 크기를 생성합니다.
$cx − 호의 중심 x 좌표를 설정합니다.
$cy − 호의 중심 y 좌표를 설정합니다.
$width − 호의 너비를 설정합니다.
$height − 호의 높이를 설정합니다.
$start − 호의 시작 각도를 도(degree) 단위로 지정합니다.
$end − 호의 끝 각도를 도 단위로 지정합니다. 0°는 3시 방향에 위치하며, 호는 시계 방향으로 그려집니다.
$color − imagecolorallocate() 함수로 생성한 색상 식별자입니다.
$style − 이미지를 어떻게 채울지 지정하며, 다음 값 중 하나를 사용할 수 있습니다.
IMG_ARC_PIE
IMG_ARC_CHORD
IMG_ARC_NOFILL
IMG_ARC_EDGED
스타일 옵션 자세히 살펴보기
IMG_ARC_PIE와 IMG_ARC_CHORD는 서로 배타적인 관계이므로 두 옵션을 동시에 사용할 수 없습니다.
IMG_ARC_CHORD는 시작 각도와 끝 각도를 직선으로 연결하는 반면, IMG_ARC_PIE는 둥근 곡선 형태의 가장자리를 만듭니다.
IMG_ARC_NOFILL은 호나 현(chord)을 채우지 않고 윤곽선만 그리도록 지정합니다.
IMG_ARC_EDGED는 IMG_ARC_NOFILL과 함께 사용되며, 시작 각도와 끝 각도를 중심점과 연결하도록 지정합니다.
반환값
성공하면 True를, 실패하면 False를 반환합니다.
예제 1
<?php
define("WIDTH", 700);
define("HEIGHT", 550);
// 이미지 생성
$image = imagecreate(WIDTH, HEIGHT);
// 색상 할당
$bg = $white = imagecolorallocate($image, 0x00, 0x00, 0x80);
$gray = imagecolorallocate($image, 122, 122, 122);
// 파이 호 그리기
$center_x = (int)WIDTH/2;
$center_y = (int)HEIGHT/2;
imagerectangle($image, 0, 0, WIDTH-2, HEIGHT-2, $gray);
imagefilledarc($image, $center_x, $center_y, WIDTH/2,
HEIGHT/2, 0, 220, $gray, IMG_ARC_PIE);
// 이미지 출력
header("Content-Type: image/gif");
imagepng($image);
?>
실행 결과

예제 2
<?php
// imagecreatetruecolor 함수로 이미지 생성
$image = imagecreatetruecolor(700, 300);
// darkgray와 darkred 색상 할당
$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
$darkred = imagecolorallocate($image, 0x90, 0x00, 0x00);
// 3D 효과 만들기
for ($i = 60; $i > 50; $i--) {
imagefilledarc($image, 100, $i, 200, 100, 75, 360, $darkred, IMG_ARC_PIE);
}
imagefilledarc($image, 100, $i, 200, 100, 45, 75 , $darkgray, IMG_ARC_PIE);
// 이미지 출력
header('Content-type: image/gif');
imagepng($image);
imagedestroy($image);
?>
실행 결과
