PHP의 이미지 처리 라이브러리 GD에서 imageFontWidth () 및 imageTtfText ()는 텍스트 렌더링을 처리하는 데 일반적으로 사용되는 두 가지 기능입니다. 그들은 각각 다른 용도와 적용 가능한 시나리오를 가지고 있습니다. 그들의 차이점과 그 사이를 전환해야 할 때 함께 일하는 방법을 이해하면보다 유연하고 고품질 텍스트 이미지 효과를 달성하는 데 도움이 될 수 있습니다.
ImageFontWidth (int $ font) : int
이 기능은 내장 글꼴의 단일 문자 너비를 얻는 데 사용됩니다. $ font 매개 변수는 글꼴 크기이며 범위는 일반적으로 1 ~ 5입니다. 이 기능은 GD 내장 글꼴에만 적용되며 문자 너비의 픽셀 값을 반환합니다.
imagetftext (resource $ im
TrueType 글꼴 텍스트를 이미지에 작성하는 데 사용되는 글꼴 파일, 글꼴 크기, 회전 각도 등을 사용자 정의 할 수 있습니다. 더 풍부한 글꼴 효과를 지원하는 것은 사용자 정의 글꼴로 이미지 텍스트를 생성하는 주요 방법입니다.
내장 글꼴 함수 (예 : ImageFontWidth () )는 간단하고 빠르며 글꼴 스타일 요구 사항이 낮은 시나리오에 적합합니다.
Truetype Font 함수 ( imageTtfText () )는 더 많은 글꼴 스타일과 복잡한 조판 요구 사항을 지원하지만 사용하기가 약간 더 복잡하며 다른 방법은 문자 너비를 계산해야합니다.
전환 시나리오의 예 :
텍스트 내용이 간단하고 글꼴 요구 사항이 낮 으면 내장 글꼴을 사용하십시오.
아름다운 글꼴 스타일이나 중국 지원이 필요할 때 imagetftext ()를 사용하십시오.
때로는 문자 너비를 기준으로 텍스트 레이아웃을 먼저 계산 한 다음 사용할 드로잉 메소드를 결정해야합니다.
내장 글꼴을 사용하는 경우 ImageFontWidth ($ Font)를 직접 호출하여 단일 문자 너비를 얻은 다음 문자 수를 곱하여 텍스트 너비를 계산하십시오.
<?php
$font = 5;
$text = "Hello World";
$textWidth = imagefontwidth($font) * strlen($text);
?>
TrueType 글꼴을 사용하면 직접 동등한 기능이 없습니다. 너비를 얻기 위해 텍스트 경계 박스를 계산하려면 imageTtfbbox () 함수를 사용해야합니다.
<?php
$fontFile = "m66.net/fonts/arial.ttf"; // 실제 글꼴 경로로 교체하십시오
$fontSize = 20;
$text = "Hello World";
$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$textWidth = abs($bbox[2] - $bbox[0]);
?>
참고 : 예에서는 글꼴 경로의 도메인 이름을 m66.net 으로 바꾸십시오.
내장 글꼴을 사용하여 간단한 텍스트를 그립니다.
<?php
$image = imagecreatetruecolor(200, 50);
$bgColor = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $bgColor);
$font = 5;
$text = "Hello World";
imagestring($image, $font, 10, 10, $text, $textColor);
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
복잡한 텍스트는 Truetype 글꼴을 사용하여 그려집니다.
<?php
$image = imagecreatetruecolor(300, 100);
$bgColor = imagecolorallocate($image, 255, 255, 255);
$textColor = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $bgColor);
$fontFile = "m66.net/fonts/arial.ttf"; // 실제 경로로 교체하십시오
$fontSize = 20;
$angle = 0;
$x = 10;
$y = 50;
$text = "Hello World";
imagettftext($image, $fontSize, $angle, $x, $y, $textColor, $fontFile, $text);
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
통합 글꼴 자원 관리 <br> Truetype 글꼴 파일 경로가 올바른지 확인하려면 경로 혼동을 피하기 위해 상대 경로 또는 구성 중앙 집중식 관리를 사용하는 것이 좋습니다. 이 예에서 도메인 이름 부분은 M66.net 으로 대체되어 개발자가 외부 리소스 주소의 교체에주의를 기울 이도록 상기시킵니다.
성능 고려 사항 <br> 내장 글꼴 함수는 빠르며 리소스가 적은 리소스를 차지하므로 간단한 이미지 시나리오에 적합합니다. Truetype 글꼴 렌더링 품질은 높지만 성능 오버 헤드는 높기 때문에 배치로 이미지를 생성 할 때 트레이드 오프가 필요합니다.
문자 너비 계산 일관성 <br> 텍스트를 배치 할 때, 내장 글꼴 및 트루 타입 글꼴 너비 계산 메소드는 동일한 이미지에서 다른 계산 방법을 혼합하여 오정렬을 피하기 위해 다릅니다.
코딩 지원
imagettftext ()는 UTF-8 인코딩 된 다국어 텍스트를 지원합니다. Imagestring () 및 관련 내장 글꼴 함수는 ASCII 문자 만 지원합니다. 다국어 텍스트를 처리 할 때 트루 타입 글꼴을 선호해야합니다.
오류 처리 <br> 글꼴 파일을 읽지 않으면 imagetftext () 오류가 발생합니다. 글꼴 파일이 미리 존재하는지 확인하는 것이 좋습니다.
ImageFontWidth ()는 가벼운 텍스트 도면을위한 내장 글꼴과 함께 작동합니다.
imagettftext () 는 고품질 및 다양한 글꼴 요구에 적합합니다.
실제 프로젝트에서는 요구 사항에 따라 합리적으로 전환하여 문자 너비 계산 방법과 글꼴 경로 관리에주의를 기울이면 이미지 텍스트를보다 정확하고 효율적으로 만들 수 있습니다.
이 두 기능의 사용 및 스위칭 기술의 차이를 이해함으로써 PHP 이미지 처리 작업을보다 편리하게 만들 수 있습니다.