当前位置: 首页> 最新文章列表> 利用 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() 可以做到更精准的垂直居中。