我正在使用PHP的GD库创建动态图像,在我的页面上创建标题。问题是,我需要一个换行系统。这本身不是问题,但首先我需要获取当前字符的宽度(以像素为单位)。
我很好奇这个问题,是否有任何方法?还是我需要手动指定每个字母的宽度?
Martti Laine
$string = "Lorem Ipsum";
$size = 20;
$angle = 0;
$fontfile = "ARIAL.TTF";
$strlen = strlen($string);
for ($i = 0; $i < $strlen; $i++)
{
$dimensions = imagettfbbox($size, $angle, $fontfile, $string[$i]);
echo "Width of ".$string[$i]." is ".$dimensions[2]."<br>";
}
$string = "Lorem Ipsum";
$size = 20;
$angle = 0;
$fontfile = "./fonts/arial.ttf";
$dimensions = imagettfbbox($size, $angle, $fontfile, $string);
print_r($dimensions);
你可能会得到类似这样的东西:
Array
(
[0] => -1
[1] => 5
[2] => 152
[3] => 5
[4] => 152
[5] => -20
[6] => -1
[7] => -20
)
每个索引都是:
0 lower left corner, X position
1 lower left corner, Y position
2 lower right corner, X position
3 lower right corner, Y position
4 upper right corner, X position
5 upper right corner, Y position
6 upper left corner, X position
7 upper left corner, Y position
因此,宽度应该是索引2-索引0。我不太明白为什么索引0要减1。
有点奇怪的是,如果你将字符串中每个字符的总和相加,结果是130而不是153。
<=
应该改成<
:) - Dany Khalife0
索引。strlen($string) - 1
。 - brenjt