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

PHP imagesetstyle() 함수 완벽 가이드 – 선 그리기 스타일 설정 방법

PHP imagesetstyle() 함수란?

imagesetstyle()은 PHP의 GD 라이브러리에 내장된 함수로, 선을 그릴 때 사용할 스타일(픽셀 색상 패턴)을 설정하는 역할을 합니다. 이 함수는 점선, 대시 패턴 등 다양한 선 스타일을 만들 수 있게 해주며, imageline(), imagepolygon() 같은 모든 선 그리기 함수와 함께 사용할 수 있습니다.

문법(Syntax)

bool imagesetstyle(resource $image, array $style)

매개변수

imagesetstyle() 함수는 두 개의 매개변수를 받습니다.

  • $image – 작업 대상이 되는 이미지 리소스입니다. imagecreatetruecolor()나 imagecreatefrompng() 등으로 생성한 이미지를 지정합니다.

  • $style – 선을 구성할 픽셀 색상들의 배열입니다. 배열에 담긴 색상 순서대로 픽셀이 반복되어 그려지므로, 이 순서를 조합하면 원하는 무늬의 선을 만들 수 있습니다.

반환 값

스타일 설정이 성공하면 true를, 실패하면 false를 반환합니다.

예제 1: 빨간색 점선과 브러시 선 그리기

아래 예제에서는 5픽셀의 빨간색과 5픽셀의 흰색이 번갈아 나타나는 점선을 그리고, imagesetbrush()와 함께 사용해 웃는 얼굴 이미지가 반복되는 브러시 선도 그려봅니다.

<?php
    header("Content-type: image/jpeg");
    $img = imagecreatetruecolor(700, 300);
    $w = imagecolorallocate($img, 122, 122, 122);
    $red = imagecolorallocate($img, 255, 0, 0);

    /* 빨간색 5픽셀 + 흰색 5픽셀로 구성된 점선 그리기 */
    $style = array($red, $red, $red, $red, $red, $w, $w, $w, $w, $w);
    imagesetstyle($img, $style);
    imageline($img, 0, 0, 200, 200, IMG_COLOR_STYLED);

    /* imagesetbrush()와 imagesetstyle()을 함께 사용해
       웃는 얼굴 이미지로 이루어진 선 그리기 */
    $style = array($w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $red);
    imagesetstyle($img, $style);
    $brush = imagecreatefrompng('C:\xampp\htdocs\Images\img34.png');
    $w2 = imagecolorallocate($brush, 255, 255, 255);
    imagecolortransparent($brush, $w2);
    imagesetbrush($img, $brush);
    imageline($img, 200, 0, 0, 200, IMG_COLOR_STYLEDBRUSHED);

    imagejpeg($img);
    imagedestroy($img);
?>

실행 결과

위 코드를 실행하면 캔버스 위에 빨간색 점선 하나와 웃는 얼굴 아이콘이 연달아 찍히는 브러시 선 하나가 출력됩니다.

예제 2: 파란색·녹색 점선 그리기

PNG 이미지를 불러온 후, 파란색 5픽셀과 녹색 5픽셀로 구성된 점선을 그리는 예제입니다.

<?php
    // imagecreatefrompng() 함수로 PNG 이미지 불러오기
    $img = imagecreatefrompng('C:\xampp\htdocs\Images\img34.png');

    // 파란색과 녹색 색상 할당
    $blue = imagecolorallocate($img, 0, 0, 255);
    $green = imagecolorallocate($img, 0, 255, 0);

    // 파란색 5픽셀 + 녹색 5픽셀 점선 그리기
    $style = array($blue, $blue, $blue, $blue, $blue,
                   $green, $green, $green, $green, $green);
    imagesetstyle($img, $style);
    imageline($img, 0, 100, 800, 100, IMG_COLOR_STYLED);

    // 브라우저에 이미지 출력
    header('Content-type: image/png');
    imagepng($img);
?>

실행 결과

코드 실행 시 이미지 가운데에 파란색과 녹색이 번갈아 나타나는 수평 점선이 그려진 것을 확인할 수 있습니다.

정리 및 핵심 포인트

  • IMG_COLOR_STYLED 상수를 imageline()의 색상 인자로 전달해야 설정한 스타일이 적용됩니다.

  • $style 배열의 길이는 자유롭게 조절할 수 있으며, 배열 순서가 곧 선의 무늬 패턴이 됩니다.

  • imagesetbrush()와 함께 사용하면 일반 색상 대신 이미지(브러시)를 선으로 표현할 수 있으며, 이때는 IMG_COLOR_STYLEDBRUSHED 상수를 사용합니다.

  • 사용이 끝난 이미지 리소스는 imagedestroy()로 해제해 주는 것이 메모리 관리에 좋습니다.