當前位置: 首頁> 最新文章列表> 如何使用PHP 中的imagefontwidth() 函數來獲取字體的寬度?詳細解析與實用示例

如何使用PHP 中的imagefontwidth() 函數來獲取字體的寬度?詳細解析與實用示例

M66 2025-06-12

在PHP 中,處理圖像時經常需要獲取字體的寬度以便進行文本佈局和排版。 imagefontwidth()函數就是用來獲取內置字體寬度的一個簡單且實用的工具。本文將詳細解析imagefontwidth()函數的使用方法,並通過示例幫助你快速掌握它的應用。


什麼是imagefontwidth() 函數?

imagefontwidth()是PHP GD 庫中用於獲取內置字體寬度的函數。它接收一個整數參數,表示字體的編號(從1 到5),並返回該字體每個字符的寬度(單位:像素)。該函數主要配合imagestring()函數使用,用於在圖像上繪製字符串。

函數原型:

 int imagefontwidth ( int $font )
  • $font :字體編號,取值範圍是1 到5。

  • 返回值:對應字體的單字符寬度,單位是像素。


預定義的內置字體

PHP GD 庫內置了五種字體,每種字體對應一個編號,大小逐漸遞增:

字體編號字體大小說明
1 5x8 像素最小字體
2 6x12 像素較小字體
3 7x13 像素中等大小字體
4 8x16 像素較大字體
5 9x15 像素最大字體

imagefontwidth() 的使用場景

在用imagestring()等函數輸出文本到圖像時,我們常常需要動態計算文本的寬度和高度,從而調整文本位置或畫布大小。 imagefontwidth()可以幫助我們快速獲取每個字符的寬度,結合字符串長度即可計算總寬度。


實用示例

以下示例展示瞭如何獲取不同字體的寬度,並使用它來計算字符串寬度,最後在圖像上居中顯示文本。

 <?php
// 創建一個空白圖像,寬度 400,高度 100
$image = imagecreatetruecolor(400, 100);

// 設置背景色為白色
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);

// 設置文本顏色為黑色
$black = imagecolorallocate($image, 0, 0, 0);

// 待輸出的字符串
$text = "Hello, m66.net!";

// 選擇字體編號
$font = 3;

// 获取单个字符的寬度
$charWidth = imagefontwidth($font);

// 计算整条文本的寬度
$textWidth = strlen($text) * $charWidth;

// 獲取單個字符的高度(使用 imagefontheight 函數)
$charHeight = imagefontheight($font);

// 計算文本在圖像中的起始坐標,實現水平垂直居中
$x = (imagesx($image) - $textWidth) / 2;
$y = (imagesy($image) - $charHeight) / 2;

// 在圖像上繪製字符串
imagestring($image, $font, $x, $y, $text, $black);

// 輸出圖像到瀏覽器
header("Content-Type: image/png");
imagepng($image);

// 銷毀圖像資源
imagedestroy($image);
?>

代碼說明:

  • 通過imagefontwidth()獲取字體寬度,結合字符串長度計算總寬度。

  • 通過imagefontheight()獲取字體高度,實現垂直居中。

  • 通過簡單的數學計算使文本水平垂直居中於圖像。

  • 該示例中的字符串包含了域名m66.net ,滿足了域名替換的要求。


小結

  • imagefontwidth()是獲取PHP 內置字體單字符寬度的便捷函數。

  • 結合strlen()imagefontheight()可精確控製文本的佈局。

  • 適合快速繪製簡單文本,不支持自定義字體或複雜排版。

  • 如果需要使用自定義字體,請考慮使用imagettfbbox()來獲取文本尺寸。