如何在圆圈上居中文字?

时间:2011-08-28 18:24:23

标签: php image text gd geometry

在php中,考虑到字体和字体大小,有一种简单的方法可以在imagettftextimagefilledarc的中心绘制文字吗?

示例
我正在使用尺寸为16的Verdana Bold,我希望将“1234567890”文本放在我的圈子中。

$font = './verdanab.ttf';
$fsize = 16;
$text = "1234567890";
imagefilledarc ($im, $cx, $cy, $w, $h, 0, 360, $color, 0);
imagettftext   ($im, $fs, 0, $x, $y, $black, $font, $text);

考虑到字体变化,我怎样才能自动调整大小?

还可以使用imagefontwidth吗? 是否有计算字体像素宽度的函数?

样品镜头:
enter image description here

1 个答案:

答案 0 :(得分:1)

使用

解决
$txtSize = imagettfbbox($fs, 0, $font, $text); // idx [2] is text width in pixel

$buffer = 20;
$w = $h = $txtSize[2] + $buffer;
$x = $cx - ($txtSize[2]/2);

imagefilledarc ($im, $cx, $cy, $w, $h, 0, 360, $color, 0);
imageAlphaBlending($im, true);
imagettftext   ($im, $fs, 0, $x, $y, $black, $font, $text);

感谢。