널리 사용되는 서버 측 스크립팅 언어로서 PHP의 내장 이미지 처리 기능 라이브러리 GD는 다른 버전에서 일부 변경 사항을 겪었습니다. 이 기사는 다른 PHP 버전에서 ImageFontWidth () 함수의 동작 차이에 중점을 두어 개발자가 기능을 올바르게 이해하고 사용하고 버전 차이로 인한 문제를 피할 수 있도록 도와줍니다.
ImageFontWidth ()는 지정된 내장 글꼴 너비를 얻는 데 사용되는 PHP GD 라이브러리의 함수입니다. 그 정의는 다음과 같습니다.
int imagefontwidth ( int $font )
매개 변수 $ font : GD 라이브러리에 내장 된 5 가지 크기의 글꼴에 해당하는 글꼴의 수, 일반적으로 1에서 5까지의 정수를 나타냅니다.
반환 값 : 글꼴의 단일 문자 너비 (픽셀).
이 기능은 주로 이미지의 중심 및 정렬 효과를 용이하게하기 위해 텍스트 너비를 계산하기 위해 imagestring () 또는 기타 문자열 도면 함수를 준수하는 데 사용됩니다.
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 () 와 함께 작동합니다.
PHP 7.X 버전은 GD 라이브러리에 대한 기본 최적화를 만들었지 만 ImageFontWidth () 의 동작은 기본적으로 일관성이 있습니다. 여전히 사전 정의 된 너비를 반환하고 내장 글꼴 번호 1 ~ 5 만 지원됩니다.
그러나 GD 라이브러리 버전이 너무 오래되거나 양립 할 수없는 경우 오류 또는 반환 값 예외를 유발할 수 있습니다. GD 라이브러리 및 PHP 버전 업그레이드를 동시에 유지하는 것이 좋습니다.
PHP 8.X는이 기능의 구현을 근본적으로 변경하지 않고도 ImageFontWidth () 에 대한 지원을 계속 유지합니다. 그러나 PHP 8은 더 엄격한 유형 검사를 강조하고 비 인구 매개 변수가 전달되면 유형 오류가 발생합니다. 예를 들어:
<?php
echo imagefontwidth("3"); // 오류가 발생합니다
?>
들어오는 $ font 매개 변수가 정수인지 확인해야합니다.
또한 PHP 8.X는 더 많은 이미지 형식을 지원하고 더 나은 성능을 지원하는 등 GD 라이브러리에 대한 향상된 지원을 제공하지만 ImageFontWidth () 는 여전히 내장 글꼴에만 적합합니다.
ImageFontWidth ()는 정수 1 ~ 5 만 허용하고, 다른 값은 거짓을 반환하거나 경고를 던지게됩니다.
<?php
var_dump(imagefontwidth(6)); // bool(false)
?>
따라서 합법적 인 글꼴 번호로 전달하십시오.
ImageFontWidth ()는 GD 라이브러리에 내장 된 글꼴에서만 작동합니다. imageTtfText () 와 같은 함수를 사용하여 사용자 정의 글꼴을로드하는 경우 imageFontWidth ()를 사용하여 너비를 얻을 수 없습니다. imagetfbbox () 와 같은 다른 방식으로 텍스트 너비를 계산해야합니다.
다른 운영 체제에서 GD 라이브러리의 구현 차이로 인해 글꼴 너비 값은 드문 경우에 약간 다를 수 있지만 일반적으로 전체 레이아웃에는 영향을 미치지 않습니다.
다음은 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 ()를 사용합니다.
버전 | 주요 행동 | 주목해야 할 것 |
---|---|---|
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>";