在PHP 中,處理圖像時經常需要獲取字體的寬度以便進行文本佈局和排版。 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 像素 | 最大字體 |
在用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()來獲取文本尺寸。