imagefontwidth() 的语法非常简单:
int imagefontwidth(int $font)
其中 $font 参数是一个整数,用来指定字体编号。
PHP 内置了几种字体供图像函数使用,这些字体编号的有效范围通常是从 1 到 5,每个编号对应一种不同大小的字体:
1:最小字体,宽度为 6 像素
2:宽度为 8 像素
3:宽度为 10 像素
4:宽度为 12 像素
5:最大字体,宽度为 16 像素
当你调用 imagefontwidth() 时,传入的字体编号如果超出了这个范围(比如是 0 或 6 以上),函数将返回 false,表示无效。
<?php
$font = 3;
$width = imagefontwidth($font);
echo "字体 $font 的宽度是: $width 像素";
?>
输出:
字体 3 的宽度是: 10 像素
这些字体是 GD 库自带的固定字体,并非 TTF 或 OTF 字体文件。它们的样式相对简单,但在很多轻量级的图像处理场景中已经足够使用。
如果你需要更丰富的字体样式(如自定义字体文件),可以考虑使用 imagettftext() 函数,它允许使用 .ttf 字体文件并指定字体大小和角度,但这就与 imagefontwidth() 无关了。
假设你想动态计算一段文字的总宽度以便居中放置在图像中:
<?php
$text = "Hello M66";
$font = 4;
$width = imagefontwidth($font) * strlen($text);
$image = imagecreate(300, 50);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
$x = (300 - $width) / 2;
$y = (50 - imagefontheight($font)) / 2;
imagestring($image, $font, $x, $y, $text, $black);
imagepng($image, "https://m66.net/output.png");
imagedestroy($image);
?>
在这个例子中,我们通过 imagefontwidth() 得到了文本所需的像素宽度,进而实现了图像中文本的居中显示。
imagefontwidth() 函数的有效字体编号是从 1 到 5,它为处理位图字体提供了简便的方式。在需要简单、快速地在图像中嵌入文本信息的场景下,这些内置字体和相关函数是非常实用的工具。不过,对于更高质量和更具设计感的文本展示,应考虑使用支持 TrueType 字体的函数。