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

PHP imagecreate() 함수 완벽 가이드: 이미지 생성 방법과 활용 예제

PHP에서 imagecreate() 함수는 새로운 빈 이미지를 생성할 때 사용되는 GD 라이브러리 함수입니다. 이 함수는 지정한 크기의 팔레트 기반(palette-based) 이미지를 만들어 주며, 이후 텍스트 출력, 도형 그리기 등 다양한 이미지 처리 작업의 기반이 됩니다.

imagecreate()와 imagecreatetruecolor()의 차이

참고로 이미지를 생성할 때는 imagecreate()보다 imagecreatetruecolor() 함수를 사용하는 것이 일반적으로 권장됩니다. 그 이유는 imagecreatetruecolor()로 생성된 트루컬러(true color) 이미지가 더 높은 색상 품질을 제공하기 때문입니다. 팔레트 기반 이미지는 최대 256색만 표현할 수 있는 반면, 트루컬러 이미지는 수백만 가지 색상을 지원하여 더 정교하고 자연스러운 결과물을 얻을 수 있습니다.

문법(Syntax)

imagecreate( $width, $height )

매개변수(Parameters)

  • width: 생성할 이미지의 너비(픽셀 단위)

  • height: 생성할 이미지의 높이(픽셀 단위)

반환값(Return)

imagecreate() 함수는 성공 시 이미지 리소스 식별자(image resource identifier)를 반환하며, 실패 시 FALSE를 반환합니다.

사용 예제

다음은 imagecreate() 함수를 사용하여 이미지를 생성하고 여러 줄의 텍스트를 출력하는 예제입니다:

<?php
   $img = imagecreate(500, 300);
   $bgcolor = imagecolorallocate($img, 150, 200, 180);
   $fontcolor = imagecolorallocate($img, 120, 60, 200);
   imagestring($img, 12, 150, 120, "Demo Text1", $fontcolor);
   imagestring($img, 3, 150, 100, "Demo Text2", $fontcolor);
   imagestring($img, 9, 150, 80, "Demo Text3", $fontcolor);
   imagestring($img, 12, 150, 60, "Demo Text4", $fontcolor);
   header("Content-Type: image/png");
   imagepng($img);
   imagedestroy($img);
?>

코드 설명

위 예제의 동작 과정을 단계별로 살펴보면 다음과 같습니다:

  • imagecreate(500, 300): 가로 500픽셀, 세로 300픽셀 크기의 새 이미지를 생성합니다.

  • imagecolorallocate(): 배경색(RGB 150, 200, 180)과 글자색(RGB 120, 60, 200)을 각각 할당합니다. 첫 번째로 할당된 색상은 자동으로 배경색이 됩니다.

  • imagestring(): 지정한 좌표에 내장 폰트로 텍스트를 그립니다. 두 번째 인수는 폰트 크기(1~5 또는 imageloadfont로 등록된 폰트), 세 번째와 네 번째 인수는 x, y 좌표입니다.

  • header("Content-Type: image/png"): 브라우저에 PNG 이미지 형식으로 출력한다는 것을 알립니다.

  • imagepng(): 생성된 이미지를 PNG 형식으로 출력합니다.

  • imagedestroy(): 사용이 끝난 이미지 리소스를 메모리에서 해제합니다.

실행 결과

위 코드를 실행하면 연한 청록색 배경 위에 보라색 텍스트 4줄이 출력된 500×300 크기의 PNG 이미지가 생성됩니다.

PHP imagecreate() 함수 완벽 가이드: 이미지 생성 방법과 활용 예제

마무리

imagecreate() 함수는 PHP GD 라이브러리의 기본적인 이미지 생성 도구입니다. 다만 실무에서는 더 나은 색상 품질을 위해 imagecreatetruecolor() 사용을 우선적으로 고려하는 것이 좋습니다. 두 함수 모두 JPEG, PNG, GIF 등 다양한 이미지 포맷으로의 출력 및 저장 작업과 함께 활용될 수 있습니다.