imagesetpixel()은 PHP의 내장(GD 라이브러리) 함수로, 지정한 좌표 위치에 단일 픽셀 하나를 설정(그리기)할 때 사용됩니다. 점 찍기, 간단한 도형 그리기, 픽셀 단위 이미지 조작 등 다양한 용도로 활용할 수 있습니다.
문법(Syntax)
bool imagesetpixel(resource $image, int $x, int $y, int $color)
매개변수(Parameters)
imagesetpixel() 함수는 총 네 개의 매개변수인 $image, $x, $y, $color를 받습니다.
$image − 작업 대상이 되는 이미지 리소스를 지정합니다.
$x − 픽셀의 x좌표를 지정합니다.
$y − 픽셀의 y좌표를 지정합니다.
$color − 픽셀에 적용할 색상을 지정합니다. 일반적으로
imagecolorallocate()함수로 생성한 색상 값을 사용합니다.
반환값(Return Values)
imagesetpixel() 함수는 성공 시 true를 반환하고, 실패 시 false를 반환합니다.
예제 1: 이미지 위에 가로 선 그리기
아래 예제는 JPEG 이미지를 불러온 뒤, 반복문과 imagesetpixel() 함수를 이용해 노란색 픽셀 1,000개를 연속으로 찍어 가로 선을 만드는 코드입니다.
<?php
// imagecreatefromjpeg() 함수로 PNG(JPEG) 이미지 불러오기
$img = imagecreatefromjpeg('C:\xampp\htdocs\test\29.jpg');
// imagesetpixel() 함수로 선 그리기
$blue = imagecolorallocate($img, 255, 255, 0);
for ($i = 0; $i < 1000; $i++) {
imagesetpixel($img, $i, 100, $blue);
}
// 결과 이미지를 브라우저에 출력
header('Content-type: image/png');
imagepng($img);
?>출력 결과

예제 2: 시에르핀스키 삼각형(Sierpinski Triangle) 그리기
다음 예제는 난수와 중점 계산을 반복하면서 픽셀을 찍는 방식으로, 유명한 프랙탈 도형인 시에르핀스키 삼각형을 그리는 코드입니다. imagesetpixel()이 픽셀 단위 작업에 얼마나 유용한지 잘 보여주는 예입니다.
<?php
$x = 700;
$y = 300;
$gd = imagecreatetruecolor($x, $y);
$corners[0] = array('x' => 100, 'y' => 10);
$corners[1] = array('x' => 0, 'y' => 170);
$corners[2] = array('x' => 190, 'y' => 170);
$blue = imagecolorallocate($gd, 255, 0, 0);
for ($i = 0; $i < 100000; $i++) {
imagesetpixel($gd, round($x), round($y), $blue);
$a = rand(0, 2);
$x = ($x + $corners[$a]['x']) / 2;
$y = ($y + $corners[$a]['y']) / 2;
}
header('Content-Type: image/png');
imagepng($gd);
?>출력 결과
