在使用 PHP 进行图像处理时,常常需要将文本添加到图片上。为了让文本看起来更加美观,水平居中对齐是一项常见且重要的操作。本文将介绍如何利用 PHP 的 imagefontwidth() 函数,结合其他相关函数,实现文本在图片中的水平居中对齐效果。
imagefontwidth() 是 PHP GD 库中的一个函数,用来获取指定字体大小下单个字符的宽度。它的基本用法如下:
int imagefontwidth ( int $font )
$font 是字体大小,取值范围为 1 到 5。
返回值是该字体大小下单个字符的宽度(像素)。
了解单个字符宽度后,我们就可以根据字符串的长度计算出整段文本的宽度,从而计算出水平居中的起始 x 坐标。
创建一张图片。
设置字体大小和文本内容。
计算文本的像素宽度:字符宽度 × 字符数量。
计算居中时的起始 x 坐标:图片宽度减去文本宽度再除以 2。
用 imagestring() 函数在图片上绘制文本。
输出或保存图片。
下面是一个完整示例,演示如何利用 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() 可以做到更精准的垂直居中。