현재 위치: > 최신 기사 목록> ImageFontWidth () 함수를 사용하여 멀티 라인 텍스트 레이아웃을 자동으로 계산하여 텍스트 정렬을 더 쉽게 만들 수있는 방법은 무엇입니까?

ImageFontWidth () 함수를 사용하여 멀티 라인 텍스트 레이아웃을 자동으로 계산하여 텍스트 정렬을 더 쉽게 만들 수있는 방법은 무엇입니까?

M66 2025-06-30

PHP에서는 이미지 텍스트 조판을 처리 할 때 종종 여러 줄의 텍스트 정렬 문제가 발생합니다. GD 라이브러리에서 ImageFontWidth () 함수를 사용하여 지정된 글꼴의 문자 너비를 쉽게 가져 오면보다 정확한 텍스트 레이아웃 및 정렬을 달성 할 수 있습니다. 이 기사에서는 ImageFontWidth () 함수를 사용하여 텍스트의 깔끔한 레이아웃을 지원하기 위해 여러 줄의 텍스트 라인의 너비를 자동으로 계산하는 방법을 자세히 소개합니다.

ImageFontWidth () 함수는 무엇입니까?

ImageFontWidth () 는 GD 라이브러리가 제공하는 함수로, 지정된 내장 글꼴로 각 문자의 너비를 픽셀로 가져옵니다. 기능 프로토 타입은 다음과 같습니다.

 int imagefontwidth(int $font);

매개 변수 $ font 는 글꼴 크기이고 값 범위는 일반적으로 1 ~ 5이며 GD에 내장 된 5 개의 글꼴 크기에 해당합니다.

함수는 글꼴에서 각 문자의 너비를 반환합니다.

이 기능을 통해 텍스트의 각 문자가 차지하는 픽셀의 수를 알 수 있으므로 문자열의 길이에 따라 전체 텍스트의 너비를 계산합니다.

멀티 라인 텍스트 레이아웃의 과제

그림에 여러 줄의 텍스트를 그리고 각 줄의 너비를 중심 또는 왼쪽으로 정렬한다고 가정 해 봅시다. 여러 줄의 텍스트 라인은 종종 길이가 다르고 문자열의 너비를 직접 계산하여 그릴 수 있습니다. 이는 특히 단일 장애 글꼴을 사용할 때 고르지 않은 레이아웃으로 이어질 수 있습니다.

솔루션은 먼저 ImageFontWidth ()를 사용하여 단일 문자의 너비를 계산 한 다음 문자열의 길이를 기준으로 각 라인의 너비를 계산하여 텍스트의 시작점 좌표를 결정하고 자동 정렬을 달성하는 것입니다.

샘플 코드 : 멀티 라인 텍스트 너비 및 드로우를 자동으로 계산합니다

다음 예제 코드는 PHP의 GD 라이브러리를 사용하여 ImageFontWidth () 와 결합하여 멀티 린 텍스트의 중앙 정렬을 달성하는 방법을 보여줍니다.

 <?php
// 빈 이미지를 만듭니다
$width = 400;
$height = 200;
$image = imagecreatetruecolor($width, $height);

// 배경색과 텍스트 색상을 설정합니다
$bgColor = imagecolorallocate($image, 255, 255, 255); // 흰색 배경
$textColor = imagecolorallocate($image, 0, 0, 0);     // 검은 텍스트

// 배경을 채우십시오
imagefilledrectangle($image, 0, 0, $width, $height, $bgColor);

// 그릴 여러 줄의 텍스트
$textLines = [
    "이것은 첫 번째 텍스트 줄입니다",
    "두 번째 텍스트 줄은 조금 더 길다",
    "세 번째 줄"
];

// 글꼴 크기를 선택하십시오
$font = 5; // GD내장 글꼴,1-5~ 사이

// 글꼴 너비와 높이를 계산하십시오
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);

// 초기 드로잉 시작점Y동등 어구
$startY = 20;

// 각 텍스트 라인을 반복하십시오,너비를 계산하고 중앙에 그리십시오
foreach ($textLines as $line) {
    $lineLength = strlen($line); // 알아채다:여기에 사용됩니다strlen순수한 영어에 적합합니다,중국어가있는 경우 사용하십시오mb_strlen그리고 캐릭터 인코딩이 있는지 확인하십시오
    $lineWidth = $fontWidth * $lineLength;

    // 믿다X동등 어구,정렬 센터
    $x = ($width - $lineWidth) / 2;

    // 텍스트를 그립니다
    imagestring($image, $font, $x, $startY, $line, $textColor);

    // 다음 줄Y동등 어구
    $startY += $fontHeight + 10; // 라인 간격10픽셀
}

// 출력 이미지
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>

코드 설명 :

  • imagefontwidth ()strlen () 에 의해 현재 라인 텍스트 너비를 계산합니다.

  • 이미지 너비를 사용하여 텍스트 너비를 빼고 2로 나뉘어 중앙에있을 때 x 좌표를 계산하십시오.

  • 여러 줄의 텍스트 라인을 순서대로 그립니다. 그리고 y 좌표를 조정하여 라인 파괴 효과를 달성하십시오.

  • 중국 문자열 너비 계산에주의하십시오. strlen () 은 바이트 수를 계산하여 계산 오류로 이어질 수 있습니다. mb_strlen () 과 적절한 문자 인코딩을 결합하는 것이 좋습니다.

중국 문자열의 너비 계산을 처리하는 방법은 무엇입니까?

ImageFontWidth ()는 단일 문자의 너비 만 얻을 수 있지만 한자는 일반적으로 멀티 바이트입니다. 정확성을 보장하기 위해 mb_strlen ()을 사용하는 것이 가장 좋습니다.

 $lineLength = mb_strlen($line, 'UTF-8');

PHP 파일 및 운영 환경이 UTF-8 인코딩을 지원하는지 확인하십시오.

요약

ImageFontWidth () 함수는 PHP GD 라이브러리에서 간단하지만 매우 실용적인 도구입니다. 개발자는 멀티 라인 텍스트 폭을 자동으로 계산하고보다 합리적인 텍스트 레이아웃 및 정렬을 달성하는 데 도움이 될 수 있습니다. 문자열 길이를 결합하여 각 텍스트 라인에서 차지하는 픽셀 폭을 계산함으로써 중심 또는 기타 정렬에 쉽게 입력 할 수 있으며 이미지 단어 처리의 복잡성을 크게 단순화합니다.