현재 위치: > 최신 기사 목록> 다른 버전의 PHP에서 imagefontwidth ()의 동작 차이

다른 버전의 PHP에서 imagefontwidth ()의 동작 차이

M66 2025-05-24

널리 사용되는 서버 측 스크립팅 언어로서 PHP의 내장 이미지 처리 기능 라이브러리 GD는 다른 버전에서 일부 변경 사항을 겪었습니다. 이 기사는 다른 PHP 버전에서 ImageFontWidth () 함수의 동작 차이에 중점을 두어 개발자가 기능을 올바르게 이해하고 사용하고 버전 차이로 인한 문제를 피할 수 있도록 도와줍니다.


1. ImageFontWidth () 함수 소개

ImageFontWidth ()는 지정된 내장 글꼴 너비를 얻는 데 사용되는 PHP GD 라이브러리의 함수입니다. 그 정의는 다음과 같습니다.

 int imagefontwidth ( int $font )
  • 매개 변수 $ font : GD 라이브러리에 내장 된 5 가지 크기의 글꼴에 해당하는 글꼴의 수, 일반적으로 1에서 5까지의 정수를 나타냅니다.

  • 반환 값 : 글꼴의 단일 문자 너비 (픽셀).

이 기능은 주로 이미지의 중심 및 정렬 효과를 용이하게하기 위해 텍스트 너비를 계산하기 위해 imagestring () 또는 기타 문자열 도면 함수를 준수하는 데 사용됩니다.


2. 다른 버전의 PHP에서 다른 행동 차이

1. php 5.x 이상

php 5.x와 이전에서 imagefontwidth ()는 비교적 안정적으로 작동하며 반환 된 너비는 내장 글꼴의 특정 크기에 해당하는 사전 정의 된 고정 값입니다. 예를 들어:

 <?php
for ($font = 1; $font <= 5; $font++) {
    echo "Font $font width: " . imagefontwidth($font) . "\n";
}
?>

출력은 대략 다음과 같습니다.

 Font 1 width: 5
Font 2 width: 6
Font 3 width: 7
Font 4 width: 8
Font 5 width: 9

이것은 aliasing 및 스케일링없이 글꼴 크기가 고정 된 ImageFonTeight () 와 함께 작동합니다.

2. PHP 7.X 버전

PHP 7.X 버전은 GD 라이브러리에 대한 기본 최적화를 만들었지 만 ImageFontWidth () 의 동작은 기본적으로 일관성이 있습니다. 여전히 사전 정의 된 너비를 반환하고 내장 글꼴 번호 1 ~ 5 만 지원됩니다.

그러나 GD 라이브러리 버전이 너무 오래되거나 양립 할 수없는 경우 오류 또는 반환 값 예외를 유발할 수 있습니다. GD 라이브러리 및 PHP 버전 업그레이드를 동시에 유지하는 것이 좋습니다.

3. PHP 8.X 버전

PHP 8.X는이 기능의 구현을 근본적으로 변경하지 않고도 ImageFontWidth () 에 대한 지원을 계속 유지합니다. 그러나 PHP 8은 더 엄격한 유형 검사를 강조하고 비 인구 매개 변수가 전달되면 유형 오류가 발생합니다. 예를 들어:

 <?php
echo imagefontwidth("3"); // 오류가 발생합니다
?>

들어오는 $ font 매개 변수가 정수인지 확인해야합니다.

또한 PHP 8.X는 더 많은 이미지 형식을 지원하고 더 나은 성능을 지원하는 등 GD 라이브러리에 대한 향상된 지원을 제공하지만 ImageFontWidth () 는 여전히 내장 글꼴에만 적합합니다.


3. 예방 조치와 일반적인 문제

1. 글꼴 번호 범위

ImageFontWidth ()는 정수 1 ~ 5 만 허용하고, 다른 값은 거짓을 반환하거나 경고를 던지게됩니다.

 <?php
var_dump(imagefontwidth(6)); // bool(false)
?>

따라서 합법적 인 글꼴 번호로 전달하십시오.

2. 내장 글꼴 제한

ImageFontWidth ()는 GD 라이브러리에 내장 된 글꼴에서만 작동합니다. imageTtfText () 와 같은 함수를 사용하여 사용자 정의 글꼴을로드하는 경우 imageFontWidth ()를 사용하여 너비를 얻을 수 없습니다. imagetfbbox () 와 같은 다른 방식으로 텍스트 너비를 계산해야합니다.

3. 다른 운영 체제

다른 운영 체제에서 GD 라이브러리의 구현 차이로 인해 글꼴 너비 값은 드문 경우에 약간 다를 수 있지만 일반적으로 전체 레이아웃에는 영향을 미치지 않습니다.


4. 실제 사례

다음은 ImageFontWidth ()를 사용하여 문자열의 너비를 계산하고 중앙에 표시하는 방법을 보여주는 간단한 예입니다.

 <?php
header('Content-Type: image/png');

$img_width = 200;
$img_height = 50;
$image = imagecreatetruecolor($img_width, $img_height);

$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);

imagefill($image, 0, 0, $white);

$text = "Hello PHP";
$font = 3;

$font_width = imagefontwidth($font);
$text_width = strlen($text) * $font_width;

$x = ($img_width - $text_width) / 2;
$y = ($img_height - imagefontheight($font)) / 2;

imagestring($image, $font, $x, $y, $text, $black);

imagepng($image);
imagedestroy($image);
?>

여기서는 텍스트의 수평 및 수직 중심을 달성하기 위해 문자열의 총 너비와 높이를 계산하기 위해 ImageFontWidth ()ImageFontheight ()를 사용합니다.


5. 요약

버전 주요 행동 주목해야 할 것
php 5.x 고정 글꼴 폭으로 돌아 가기, 안정,지지 글꼴 번호 1-5 큰 변화가 없습니다
php 7.x 기본적으로 변경 사항이 없으며 기본 최적화가 필요하며 GD 라이브러리가 조정됩니다. 오류를 피하기 위해 GD 라이브러리를 업데이트하십시오
php 8.x 기능을 유지하기위한 향상된 유형 확인 매개 변수는 정수 여야하며 오류가 더 분명합니다.

ImageFontWidth () 는 GD 이미지 처리에서 기본적이고 간단한 기능입니다. 눈에 띄지 않는 것처럼 보이지만 합리적인 사용은 개발자가 특히 버전에 걸쳐 개발할 때 텍스트 도면 효과를보다 정확하게 제어하는 ​​데 도움이되며 호환성에주의를 기울여야합니다.


사용 중에 버전 호환성 문제가 발생하면 GD 라이브러리 버전 및 PHP 버전이 먼저 일치하고 공식 문서 사양에 따라 ImageFontWidth ()를 엄격하게 사용하여 불법 매개 변수를 전달하지 마십시오.


 // 예제 URL 사용 m66.net 교체 도메인 이름 데모
$url = "https://m66.net/example/path";
echo "<a href=\"$url\">예제에 액세스하려면 클릭하십시오</a>";