이미지 처리 및 GD imagettftext

(PHP 4, PHP 5, PHP 7, PHP 8)

imagettftext — TrueType 글꼴을 사용하여 이미지에 텍스트 쓰기


설명

imagettftext(
    GdImage $image,
    float $size,
    float $angle,
    int $x,
    int $y,
    int $color,
    string $font_filename,
    string $text,
    array $options = []
): array|false
                

TrueType 글꼴을 사용하여 이미지에 주어진 text를 씁니다.

메모: PHP 8.0.0 이전에 imagefttext()extrainfo를 추가로 지원하는 imagettftext()의 확장된 변형이었습니다. PHP 8.0.0부터 imagettftext()imagefttext()의 별칭입니다.


매개변수

image
imagecreatetruecolor()와 같은 이미지 생성 함수 중 하나에서 반환되는 GdImage 객체.
size
글꼴 크기(포인트).
angle
0도는 왼쪽에서 오른쪽으로 읽는 텍스트를 나타내는 각도(도)입니다. 값이 높을수록 시계 반대 방향 회전을 나타냅니다. 예를 들어 값이 90이면 아래에서 위로 읽는 텍스트가 됩니다.
x
xy에 의해 주어진 좌표는 첫 번째 문자의 기준점을 정의합니다(대략 문자의 왼쪽 아래 모서리). 이것은 xy가 첫 번째 문자의 왼쪽 위 모서리를 정의하는 imagestring()과 다릅니다. 예를 들어 "top left"은 0, 0입니다.
y
Y좌표. 이것은 문자의 맨 아래가 아니라 글꼴 기준선의 위치를 ​​설정합니다.
color
색상 인덱스입니다. 색상 인덱스의 음수를 사용하면 앤티앨리어싱을 끄는 효과가 있습니다. imagecolorallocate()를 참조하십시오.
fontfile
사용하려는 트루타입 글꼴의 경로입니다.

PHP가 사용하는 GD 라이브러리 버전에 따라 fontfile이 /로 시작하지 않으면 .ttf가 파일 이름에 추가되고 라이브러리는 라이브러리 정의 글꼴 경로를 따라 해당 파일 이름을 검색하려고 시도합니다.

2.0.18보다 낮은 버전의 GD 라이브러리를 사용할 때 세미콜론이 아닌 공백 문자가 다른 글꼴 파일의 '경로 구분자'로 사용되었습니다. 이 기능을 의도하지 않게 사용하면 경고 메시지가 나타납니다. Warning: Could not find/open font. 이러한 영향을 받는 버전의 경우 유일한 솔루션은 글꼴을 공백이 포함되지 않은 경로로 이동하는 것입니다.

글꼴이 사용하는 스크립트와 동일한 디렉토리에 있는 많은 경우에 다음 트릭을 사용하면 포함 문제를 완화할 수 있습니다.

                      
<?php
// Set the environment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'SomeFont';
?>
                      
                    

메모: open_basedirfontfile에 적용되지 않습니다.

text
UTF-8 인코딩의 텍스트 문자열입니다.

위치 127을 초과하는 글꼴의 문자에 액세스하기 위해 10진수 숫자 문자 참조(형식: €)를 포함할 수 있습니다. 16진수 형식(예: ©)이 지원됩니다. UTF-8 인코딩의 문자열은 직접 전달할 수 있습니다.

©와 같은 명명된 엔터티는 지원되지 않습니다. 이러한 명명된 엔터티를 UTF-8 문자열로 디코딩하려면 html_entity_decode()를 사용하는 것이 좋습니다.

글꼴에서 지원하지 않는 문자열에 문자가 사용되면 속이 빈 사각형이 해당 문자를 대체합니다.


반환 값

텍스트의 경계 상자를 만드는 4개의 점을 나타내는 8개의 요소가 있는 배열을 반환합니다. 포인트의 순서는 왼쪽 아래, 오른쪽 아래, 오른쪽 위, 왼쪽 위입니다. 점은 각도에 관계없이 텍스트를 기준으로 하므로 "왼쪽 위"는 텍스트를 가로로 볼 때 왼쪽 상단 모서리를 의미합니다. 오류가 발생하면 false를 반환합니다.


변경 로그

버전 설명
8.0.0 options이 추가되었습니다.

Examples

예제 #1 imagettftext() 예제

이 예제 스크립트는 Arial 글꼴에서 검정색(회색 그림자 포함)에 "Testing..."이라는 단어가 있는 흰색 PNG 400x30 픽셀을 생성합니다.

                  
<?php
// Set the content-type
header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'arial.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

function imagettftext


메모

참고: 이 함수는 PHP가 freetype 지원(--with-freetype-dir=DIR)으로 컴파일된 경우에만 사용할 수 있습니다.


기타

  • imagettfbbox() - TrueType 글꼴을 사용하여 텍스트의 경계 상자 제공
  • imagefttext() - FreeType 2를 사용하여 글꼴을 사용하여 이미지에 텍스트 쓰기