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

PHP imagesetpixel() 함수로 이미지의 단일 픽셀을 설정하는 방법

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);
?>

출력 결과

PHP imagesetpixel() 함수로 이미지의 단일 픽셀을 설정하는 방법

예제 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);
?>

출력 결과

PHP imagesetpixel() 함수로 이미지의 단일 픽셀을 설정하는 방법