현재 위치: > 최신 기사 목록> ImageStringUp () 함수를 사용할 때 imageFontWidth ()를 사용하여 텍스트 레이아웃 및 정렬을 조정하는 방법?

ImageStringUp () 함수를 사용할 때 imageFontWidth ()를 사용하여 텍스트 레이아웃 및 정렬을 조정하는 방법?

M66 2025-06-15

PHP에서 imagestringup () 함수는 이미지에 문자열을 수직으로 그리는 데 사용됩니다. Imagestring () 과 유사하지만 그려진 텍스트는 수직 상향이므로 회전하는 텍스트 효과로 이미지를 생성 할 때 매우 실용적입니다. 그러나 imagestringup ()을 사용하여 직접 텍스트를 그릴 때 텍스트의 레이아웃과 정렬에는 종종 개발자의 수동 제어가 필요합니다. 이 시점에서 ImageFontWidth () 함수는 문자 너비를 정확하게 계산하는 데 도움이되므로 텍스트의 레이아웃과 정렬을 더 잘 조정하는 데 도움이 될 수 있습니다.

기본 개념 소개

  • imagestringup ()
    이미지에 문자열을 그리는 데 사용되는 구문은 다음과 같습니다.

     bool imagestringup(resource $image, int $font, int $x, int $y, string $string, int $color);
    

    그중에서도 $ font 는 내장 글꼴 크기 (1 ~ 5), $ x, $ y 는 시작 좌표, $ string 은 텍스트 내용이며 $ color는 색상 자원입니다.

  • imageFontWidth ()
    지정된 내장 글꼴 크기의 문자 너비를 반환하면 구문은 다음과 같습니다.

     int imagefontwidth(int $font);
    

이 두 기능을 사용하면 겹치는 텍스트 나 불규칙한 레이아웃을 피하고 그리기시 텍스트 위치를 제어 할 수 있습니다.

텍스트 레이아웃을 조정하기 위해 ImageFontWidth ()를 사용해야하는 이유는 무엇입니까?

ImagestringUp () 은 텍스트를 수직으로 그리기 때문에 각 문자의 수평 간격이 고정되어 있지만 문자 너비가 계산되지 않고 좌표 도면이 직접 제공되면 텍스트가 예상 위치에서 벗어나거나, 특히 여러 줄이 그려 지거나 중앙 정렬이 필요할 때 텍스트가 필요합니다. 따라서 먼저 imagefontwidth () 를 통해 글꼴의 문자 너비를 얻고 각 문자의 도면 위치를 계산하며 합리적인 텍스트 레이아웃을 보장해야합니다.

실제 예 : 수평 텍스트의 수평 중심 정렬 구현

폭이 200 픽셀의 이미지에 수직으로 문자열 선을 그리고 수평 중심 정렬을 달성한다고 가정합니다.

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

// 색상을 할당합니다
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);

// 배경색을 채우십시오
imagefill($image, 0, 0, $white);

$text = "Hello";
$font = 5;  // 내장 글꼴 크기 1~5

// 텍스트 너비를 계산합니다
$fontWidth = imagefontwidth($font);
$textWidth = strlen($text) * $fontWidth;

// 계산 시작 x 동등 어구,중심 수준을 달성하십시오
$x = ($width - $textWidth) / 2;

// y 동등 어구从底部开始向上绘制
$y = 80;

// 사용 imagestringup() 수직 텍스트를 그립니다
imagestringup($image, $font, $x, $y, $text, $black);

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

설명 :

  • ImageFontWidth ($ font) 로 글꼴의 각 문자의 너비를 얻으십시오.

  • 전체 텍스트 너비를 얻으려면 문자열의 길이를 곱하십시오.

  • 텍스트 너비를 이미지 너비로 빼고 2로 나뉘려면 수평으로 텍스트 중심을 달성하십시오.

  • ImagestringUp () 의 좌표에서 X 는 텍스트의 왼쪽 가장자리이고 y는 텍스트 하단의 기준선의 수직 좌표입니다.

고급 : 멀티 라인 수직 텍스트의 중앙 정렬을 실현하십시오

왼쪽에서 오른쪽으로 배열 된 여러 텍스트 세그먼트를 그리는 등 여러 개의 세로 텍스트 라인을 그려야하며 각 세그먼트가 수직으로 표시되면 imageFontWidth ()를 사용하여 각 세그먼트의 너비를 계산하고 X 좌표를 동적으로 조정할 수도 있습니다.

 <?php
$width = 300;
$height = 150;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);

$font = 4;
$texts = ["PHP", "Imagestringup", "Example"];

// 총 폭을 계산하십시오
$fontWidth = imagefontwidth($font);
$totalWidth = 0;
foreach ($texts as $t) {
    $totalWidth += strlen($t) * $fontWidth + 10; // 각 간격10픽셀
}
$totalWidth -= 10; // 마지막은 간격이 없습니다

// 시작 x 동등 어구居中
$x = ($width - $totalWidth) / 2;
$y = 130;

foreach ($texts as $t) {
    imagestringup($image, $font, $x, $y, $t, $black);
    $x += strlen($t) * $fontWidth + 10;
}

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

이를 통해 여러 수직 텍스트의 배열 및 정렬을 유연하게 제어 할 수 있습니다.