當前位置: 首頁> 最新文章列表> 利用imagefontwidth() 實現文本水平居中對齊

利用imagefontwidth() 實現文本水平居中對齊

M66 2025-05-29

在使用PHP 進行圖像處理時,常常需要將文本添加到圖片上。為了讓文本看起來更加美觀,水平居中對齊是一項常見且重要的操作。本文將介紹如何利用PHP 的imagefontwidth()函數,結合其他相關函數,實現文本在圖片中的水平居中對齊效果。

一、 imagefontwidth()函數簡介

imagefontwidth()是PHP GD 庫中的一個函數,用來獲取指定字體大小下單個字符的寬度。它的基本用法如下:

 int imagefontwidth ( int $font )
  • $font是字體大小,取值範圍為1 到5。

  • 返回值是該字體大小下單個字符的寬度(像素)。

了解單個字符寬度後,我們就可以根據字符串的長度計算出整段文本的寬度,從而計算出水平居中的起始x 坐標。

二、實現步驟

  1. 創建一張圖片。

  2. 設置字體大小和文本內容。

  3. 計算文本的像素寬度:字符寬度× 字符數量。

  4. 計算居中時的起始x 坐標:圖片寬度減去文本寬度再除以2。

  5. imagestring()函數在圖片上繪製文本。

  6. 輸出或保存圖片。

三、代碼示例

下面是一個完整示例,演示如何利用imagefontwidth()來實現文本的水平居中對齊。

 <?php
// 創建一張寬 400px,高 100px 的真彩色圖片
$width = 400;
$height = 100;
$image = imagecreatetruecolor($width, $height);

// 定義顏色
$bg_color = imagecolorallocate($image, 255, 255, 255); // 白色背景
$text_color = imagecolorallocate($image, 0, 0, 0);     // 黑色文字

// 填充背景色
imagefilledrectangle($image, 0, 0, $width, $height, $bg_color);

// 文本內容和字體大小
$text = "歡迎訪問 m66.net";
$font = 5; // 字體大小,範圍1-5

// 獲取單個字符寬度
$char_width = imagefontwidth($font);

// 計算整段文本寬度
$text_width = $char_width * strlen($text);

// 計算文本的起始x坐標,實現水平居中
$x = ($width - $text_width) / 2;

// y坐標,垂直方向居中
$char_height = imagefontheight($font);
$y = ($height - $char_height) / 2;

// 在圖片上寫入文本
imagestring($image, $font, $x, $y, $text, $text_color);

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

在這段代碼中:

  • imagefontwidth($font)返回字體大小為5 時單個字符的寬度(像素)。

  • 使用strlen($text)計算字符串字符數量。

  • 乘積就是文本的總寬度。

  • 利用圖片寬度減去文本寬度,再除以2 計算出居中的起點x

  • 這樣文本就能水平居中顯示。

四、總結

imagefontwidth()是實現文本水平居中的關鍵函數之一。通過它,結合字符串長度和圖片尺寸,可以很方便地計算文本的起始繪製位置,保證文字居中顯示。配合imagefontheight()可以做到更精準的垂直居中。