이미지 텍스트 처리에 PHP의 GD 라이브러리를 사용하는 경우 종종 텍스트 크기가 지정된 너비와 일치하지 않는 문제가 발생합니다. 특히 텍스트가 그림의 특정 너비에 완벽하게 맞기를 원할 때 글꼴 크기를 조정하는 것이 열쇠가됩니다. Font 번호 매기기와 결합 된 PHP의 ImageFontWidth () 함수는 텍스트 너비를 동적으로 계산하여 글꼴 크기를 자동으로 조정하여 텍스트가 지정된 너비를 채우도록 도와줍니다.
이 기사는 텍스트 크기를 자동으로 조정하는 효과를 달성하기 위해 ImageFontWidth () 및 글꼴 번호를 사용하는 방법을 자세히 소개합니다.
ImageFontWidth (int $ font)는 내장 글꼴 번호를 지정하는 픽셀로 단일 문자의 너비를 반환합니다. GD 라이브러리에는 5 개의 내장 글꼴, 숫자 1 ~ 5 및 글꼴 크기가 순서대로 증가합니다.
글꼴 번호 | 글꼴 크기 (픽셀) | 설명 |
---|---|---|
1 | 5x8 | 최소 글꼴 |
2 | 6x12 | 더 작은 글꼴 |
3 | 7x13 | 중간 글꼴 |
4 | 8x15 | 더 큰 글꼴 |
5 | 9x15 | 최대 글꼴 |
글꼴 번호를 사용하면 글꼴 너비를 빠르게 가져 와서 텍스트 전체 단락의 너비를 계산할 수 있습니다.
텍스트 텍스트 와 원하는 최대 너비 MaxWidth가 있다고 가정하면 텍스트 너비가 MaxWidth를 초과하지 않고 글꼴이 클수록 좋습니다.
단계는 다음과 같습니다.
최대 글꼴 번호 (5)로 시작하십시오.
텍스트의 전체 단락의 너비를 계산하려면 ImageFontWidth () 에 텍스트 길이를 곱하십시오.
너비가 MaxWidth 보다 작거나 같으면 글꼴 크기를 선택하십시오.
모두 초과하면 최소 글꼴을 선택하십시오.
다음은 적절한 글꼴 크기를 자동으로 선택하고 이미지에서 텍스트를 그리는 방법에 대한 완전한 예입니다.
<?php
// 캐릭터 내용
$text = "자동 글꼴 크기 예제";
// 예상 최대 너비(단위:픽셀)
$maxWidth = 200;
// 글꼴 번호를 사용해보십시오5도착하다1
$font = 5;
for ($i = 5; $i >= 1; $i--) {
$textWidth = imagefontwidth($i) * strlen($text);
if ($textWidth <= $maxWidth) {
$font = $i;
break;
}
}
// 사진을 만듭니다,너비는 $maxWidth,높이는 글꼴 높이입니다
$fontHeight = imagefontheight($font);
$im = imagecreatetruecolor($maxWidth, $fontHeight + 10);
// 색 분포
$bgColor = imagecolorallocate($im, 255, 255, 255); // 흰색 배경
$textColor = imagecolorallocate($im, 0, 0, 0); // 검은 텍스트
// 배경을 채우십시오
imagefilledrectangle($im, 0, 0, $maxWidth, $fontHeight + 10, $bgColor);
// 텍스트 시작을 계산하십시오X동등 어구,센터링을 실현하십시오
$textWidth = imagefontwidth($font) * strlen($text);
$x = ($maxWidth - $textWidth) / 2;
$y = 5;
// 출력 텍스트
imagestring($im, $font, $x, $y, $text, $textColor);
// 출력 사진
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
이 방법은 GD 라이브러리의 내장 글꼴의 고정 너비 특성을 사용하여 텍스트 너비를 빠르게 계산합니다.
strlen () 은 영어 및 단일 바이트 문자에 적합합니다. 중국어 및 기타 다중 바이트 문자가 포함 된 경우 MB_Strlen ()을 사용하고 계산 로직을 조정하는 것이 좋습니다.
TTF 글꼴을 사용해야하는 경우 imagetfbbox ()를 사용하여보다 정확한 텍스트 너비를 얻을 수 있습니다.
이 솔루션은 간단하고 효율적이며 빠른 수요 시나리오에 적합합니다.