PHP에서 imageetftext ()는 이미지에 TTF (Truetype Font) 기반 텍스트를 추가하는 매우 실용적인 기능입니다. 이 기능을 통해 스타일, 크기, 색상, 위치 및 텍스트의 회전 각도를 정확하게 제어 할 수 있습니다. 오늘날, 우리는 imagettftext 함수의 텍스트 회전 기능에 중점을두고 일반적인 문제에 대한 몇 가지 솔루션을 제공 할 것입니다.
imageetftext () 함수의 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">imagettftext</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$size</span></span><span>, </span><span><span class="hljs-variable">$angle</span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>, </span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$color</span></span><span>, </span><span><span class="hljs-variable">$fontfile</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
</span></span>
$ 이미지 : 텍스트를 추가 할 이미지 리소스.
$ 크기 : 텍스트의 글꼴 크기.
$ 각도 : 텍스트 회전의 각도, 단위는 정도입니다 (양수 숫자는 시계 반대 방향 회전을 나타내고 음수는 시계 방향 회전을 나타냅니다).
$ x , $ y : 텍스트의 시작 위치 좌표 (왼쪽 하단).
$ color : 텍스트의 색상, 일반적으로 imagecolorallocate () 에 의해 생성 된 색상 자원입니다.
$ fontfile : Truetype 글꼴 파일의 경로.
$ 텍스트 : 표시 할 텍스트 내용.
imagetftext () 함수의 핵심 기능 중 하나는 텍스트 회전 함수이며, 이는 $ 앵글 매개 변수를 통해 구체적으로 구현됩니다. 이 매개 변수의 값을 조정하면 텍스트의 회전 각도를 제어 할 수 있습니다. 회전 각도의 단위는 각도이며, 양수 값은 반 시계 방향 회전을 나타내고, 음수 값은 시계 방향 회전을 나타냅니다.
예를 들어, 텍스트가 시계 방향으로 45도 회전하려면 다음과 같이 부를 수 있습니다.
<span><span><span class="hljs-title function_ invoke__">imagettftext</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, -</span><span><span class="hljs-number">45</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">150</span></span><span>, </span><span><span class="hljs-variable">$color</span></span><span>, </span><span><span class="hljs-variable">$fontfile</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>);
</span></span>
이 코드 라인은 "Hello, World!"를 회전시킬 것입니다. 글꼴 20의 텍스트, 시계 방향 45도, 좌표 (100, 150)로 이미지에 그려집니다.
텍스트를 회전 할 때 텍스트 위치 계산에 문제가 발생할 수 있습니다. 텍스트의 경계 상자도 회전 후에도 변경되므로 회전 된 텍스트가 항상 원래 위치를 기반으로하는 것은 아닙니다.
일반적인 솔루션은 imagetfbbox () 함수를 사용하여 회전 된 텍스트의 경계 상자를 얻는 것입니다. 이 함수는 텍스트의 4 개의 코너 좌표를 반환합니다. 이 정보를 결합하면 올바른 텍스트 위치를 계산할 수 있습니다.
<span><span><span class="hljs-variable">$bbox</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagettfbbox</span></span><span>(</span><span><span class="hljs-number">20</span></span><span>, -</span><span><span class="hljs-number">45</span></span><span>, </span><span><span class="hljs-variable">$fontfile</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>);
</span><span><span class="hljs-variable">$x</span></span><span> = </span><span><span class="hljs-number">100</span></span><span> - </span><span><span class="hljs-variable">$bbox</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; </span><span><span class="hljs-comment">// 경계 박스에 따라 시작 위치를 조정하십시오</span></span><span>
</span><span><span class="hljs-variable">$y</span></span><span> = </span><span><span class="hljs-number">150</span></span><span> - </span><span><span class="hljs-variable">$bbox</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">imagettftext</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, -</span><span><span class="hljs-number">45</span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>, </span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$color</span></span><span>, </span><span><span class="hljs-variable">$fontfile</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>);
</span></span>
텍스트 회전을 수행 할 때 텍스트 오프셋 문제가 발생할 수 있습니다. 이것은 일반적으로 회전 된 텍스트로 인해 경계 상자가 변경되기 때문입니다. 해결책은 imageTtfbbox () 함수를 사용하여 회전 된 텍스트 경계를 계산 한 다음 실제 요구에 따라 텍스트 좌표를 조정하는 것입니다.
동일한 이미지에 여러 회전 된 텍스트를 추가하면 텍스트 중첩이 발생할 수 있습니다. 해결책은 각 텍스트의 $ X 및 $ y 좌표를 수동으로 조정하거나 루프를 사용하여 여러 텍스트를 생성하고 각 텍스트에 대해 다른 시작 좌표를 지정하는 것입니다.
때로는 회전 된 텍스트가 특히 더 작은 글꼴 크기에서 흐릿하거나 왜곡 될 수 있습니다. 이 문제는 일반적으로 이미지의 해상도와 관련이 있습니다. 이 문제를 해결하기 위해 이미지의 해상도를 높이고 (즉, 이미지의 너비와 높이를 늘린 다음) 대상 크기로 다시 스케일링 할 수 있습니다.
특히 음수 값을 사용할 때 회전 각도가 올바른지 확인하십시오. PHP에서 imageTtftext () 함수의 회전 각도는 반 시계 방향으로 양수이며 시계 방향으로 음의 음의입니다. 회전 방향이 반대 인 상황에 직면하면 각도의 부호를 조정하려고 시도 할 수 있습니다.
imageTtftext () 함수의 텍스트 회전 함수는 개발자가 이미지에서 유연하게 회전 된 텍스트를 추가하는 데 도움이되는 매우 강력한 도구입니다. 회전 각도를 합리적으로 사용하고 imagetfbbox ()를 결합하여 경계 상자를 계산하면 회전 중에 위치 편차 및 오버랩과 같은 문제를 효과적으로 해결할 수 있습니다. 이러한 기술을 마스터하면 회전 된 텍스트로 이미지 작업을보다 쉽게 처리 할 수 있습니다.