현재 위치: > 최신 기사 목록> 텍스트의 너비를 결정하여 텍스트가 그림의 경계를 초과하는 것을 피하기 위해 텍스트 너비를 결정하는 방법은 무엇입니까?

텍스트의 너비를 결정하여 텍스트가 그림의 경계를 초과하는 것을 피하기 위해 텍스트 너비를 결정하는 방법은 무엇입니까?

M66 2025-07-10

PHP를 사용하여 텍스트로 사진을 생성 할 때 텍스트가 그림의 경계를 초과하지 않도록해야하므로 전체적인 미학 및 가독성에 영향을 미칩니다. PHP는 이미지와 텍스트를 처리하기위한 다양한 기능을 제공합니다. ImageFontWidth ()는 지정된 글꼴 크기로 단일 문자의 너비를 얻는 데 도움이되는 매우 실용적인 기능으로 전체 텍스트의 너비를 계산합니다.

이 기사는 ImageFontWidth ()를 사용하여 텍스트 너비를 결정하고 텍스트가 그림에 텍스트를 그릴 때 경계를 초과하는 것을 방지하는 방법을 자세히 소개합니다.

1. ImageFontWidth () 란 무엇입니까?

ImageFontWidth () 함수의 함수는 내장 글꼴 문자의 너비를 픽셀로 반환하는 것입니다. 기능 정의는 다음과 같습니다.

 int imagefontwidth(int $font);

매개 변수 $ font 는 글꼴 크기이고 값 범위는 일반적으로 1 ~ 5이며 PHP의 5 개의 내장 글꼴 크기를 나타냅니다.

이 기능을 통해 각 문자의 너비를 얻은 다음 문자열의 길이를 결합하여 전체 텍스트의 너비를 계산할 수 있습니다.

2. 텍스트 폭을 판단하는 예

다음 코드는 문자열 너비를 계산하는 방법을 보여주고 지정된 이미지 너비를 초과하는지 여부를 결정합니다.

 <?php
// 이미지 너비를 설정하십시오
$image_width = 200;

// 글꼴 크기를 선택하십시오,1 도착하다 5
$font = 3;

// 그릴 문자열
$text = "이것은 테스트 텍스트입니다";

// 단일 문자의 너비를 계산하십시오
$char_width = imagefontwidth($font);

// 문자열 너비를 계산하십시오
$text_width = strlen($text) * $char_width;

// 텍스트가 경계를 초과하는지 확인하십시오
if ($text_width > $image_width) {
    echo "텍스트 너비는 이미지 너비를 초과합니다,경계를 넘어서는 것일 수 있습니다";
} else {
    echo "텍스트 너비는 그림 범위 내에 있습니다,그릴 수 있습니다";
}
?>

참고 : 위 코드에서 strlen ()은 바이트 길이를 계산합니다. 텍스트가 중국인 인 경우 MB_Strlen ()을 사용하여 중국어가 잘못 계산되지 않도록 문자 길이를 계산하는 것이 좋습니다.

 $text_length = mb_strlen($text, 'UTF-8');
$text_width = $text_length * $char_width;

3. ImageFontWidth ()를 결합하여 텍스트를 그리고 초과하지 않도록하십시오

그림에 텍스트를 작성하려면 먼저 텍스트 너비를 측정 한 다음 글꼴을 줄이거나 텍스트를 잘라 내거나 줄을 끊어야하는지 결정할 수 있습니다. 다음 예제는 이미지 너비를 기준으로 텍스트를 자동으로 자르는 방법을 보여줍니다.

 <?php
// 빈 이미지를 만듭니다
$image_width = 200;
$image_height = 50;
$image = imagecreatetruecolor($image_width, $image_height);

// 배경색을 설정하십시오
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);

// 글꼴 색상을 설정하십시오
$text_color = imagecolorallocate($image, 0, 0, 0);

// 캐릭터 내용
$text = "이것은 테스트 텍스트입니다,길어질 수 있습니다";

// 글꼴 크기를 선택하십시오
$font = 3;
$char_width = imagefontwidth($font);

// 최대 몇 개의 문자 수를 계산하십시오
$max_chars = floor($image_width / $char_width);

// 텍스트를 잘라냅니다,이미지 너비가 초과되지 않도록합니다
if (mb_strlen($text, 'UTF-8') > $max_chars) {
    $text = mb_substr($text, 0, $max_chars, 'UTF-8') . '...';
}

// 텍스트 너비를 계산합니다,중앙 디스플레이
$text_length = mb_strlen($text, 'UTF-8');
$text_width = $text_length * $char_width;
$x = ($image_width - $text_width) / 2;
$y = ($image_height - imagefontheight($font)) / 2;

// 텍스트를 그립니다
imagestring($image, $font, $x, $y, $text, $text_color);

// 출력 사진
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>

4. 요약

  • ImageFontWidth ($ font)를 사용하여 단일 문자의 너비를 얻으십시오.

  • mb_strlen () 을 결합하여 문자열의 문자 수를 계산하여 텍스트의 총 폭을 얻습니다.

  • 텍스트 너비를 그림 너비와 비교하여 초과할지 여부를 결정하십시오.

  • 텍스트가 그림 범위 내에 있는지 확인하기 위해 텍스트를 잘라 내거나 글꼴 크기를 조정하십시오.

  • 이 방법은 PHP 내장 글꼴을 사용하여 텍스트를 그린 장면에 적합합니다.

TTF 글꼴을 사용하여 텍스트를 그려야하는 경우 텍스트 크기를보다 정확하게 측정하기 위해 imagetfbbox ()를 사용하는 것이 좋습니다.