현재 위치: > 최신 기사 목록> 자동 글꼴 스케일링 : ImageFontWidth () 및 글꼴 번호 조정을 결합하십시오

자동 글꼴 스케일링 : ImageFontWidth () 및 글꼴 번호 조정을 결합하십시오

M66 2025-05-31

이미지 텍스트 처리에 PHP의 GD 라이브러리를 사용하는 경우 종종 텍스트 크기가 지정된 너비와 일치하지 않는 문제가 발생합니다. 특히 텍스트가 그림의 특정 너비에 완벽하게 맞기를 원할 때 글꼴 크기를 조정하는 것이 열쇠가됩니다. Font 번호 매기기와 결합 된 PHP의 ImageFontWidth () 함수는 텍스트 너비를 동적으로 계산하여 글꼴 크기를 자동으로 조정하여 텍스트가 지정된 너비를 채우도록 도와줍니다.

이 기사는 텍스트 크기를 자동으로 조정하는 효과를 달성하기 위해 ImageFontWidth () 및 글꼴 번호를 사용하는 방법을 자세히 소개합니다.


1. ImageFontWidth () 및 글꼴 번호를 이해합니다

ImageFontWidth (int $ font)는 내장 글꼴 번호를 지정하는 픽셀로 단일 문자의 너비를 반환합니다. GD 라이브러리에는 5 개의 내장 글꼴, 숫자 1 ~ 5 및 글꼴 크기가 순서대로 증가합니다.

글꼴 번호 글꼴 크기 (픽셀) 설명
1 5x8 최소 글꼴
2 6x12 더 작은 글꼴
3 7x13 중간 글꼴
4 8x15 더 큰 글꼴
5 9x15 최대 글꼴

글꼴 번호를 사용하면 글꼴 너비를 빠르게 가져 와서 텍스트 전체 단락의 너비를 계산할 수 있습니다.


2. 글꼴 크기를 자동으로 조정하는 핵심 아이디어

텍스트 텍스트 와 원하는 최대 너비 MaxWidth가 있다고 가정하면 텍스트 너비가 MaxWidth를 초과하지 않고 글꼴이 클수록 좋습니다.

단계는 다음과 같습니다.

  1. 최대 글꼴 번호 (5)로 시작하십시오.

  2. 텍스트의 전체 단락의 너비를 계산하려면 ImageFontWidth () 에 텍스트 길이를 곱하십시오.

  3. 너비가 MaxWidth 보다 작거나 같으면 글꼴 크기를 선택하십시오.

  4. 모두 초과하면 최소 글꼴을 선택하십시오.


3. 코드 예제

다음은 적절한 글꼴 크기를 자동으로 선택하고 이미지에서 텍스트를 그리는 방법에 대한 완전한 예입니다.

 <?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);
?>

4. 설명

  • 이 방법은 GD 라이브러리의 내장 글꼴의 고정 너비 특성을 사용하여 텍스트 너비를 빠르게 계산합니다.

  • strlen () 은 영어 및 단일 바이트 문자에 적합합니다. 중국어 및 기타 다중 바이트 문자가 포함 된 경우 MB_Strlen ()을 사용하고 계산 로직을 조정하는 것이 좋습니다.

  • TTF 글꼴을 사용해야하는 경우 imagetfbbox ()를 사용하여보다 정확한 텍스트 너비를 얻을 수 있습니다.

  • 이 솔루션은 간단하고 효율적이며 빠른 수요 시나리오에 적합합니다.


5. 참조 링크