4

imagettftext()用来在图像上写动态文本,我希望它适合我的图像宽度。

如何通过文本长度计算字体大小?

4

2 回答 2

12

imagettfbbox您可以在使用函数输出之前计算 TTF 文本的边界框。不幸的是,没有直接的缩放方法来适应宽度,所以你必须自己做。

一种方法是将默认字体大小(例如 20)的文本传递给imagettfbbox并从中检索宽度。然后,您可以通过计算比例因子来计算文本应该小多少或大多少以适合您想要的大小:

scale = targetWidth / bboxWidth;

然后绘制适当大小的文本:

fontSize = 20 * scale;

使用该imagettftext功能。字体不会以这种方式完美地 100% 缩放,但您会得到一个非常好的近似值。

imagettfbox 请参阅此处的文档。

于 2012-05-21T16:52:32.363 回答
-2
while (itsTooBigAccordingToimagettftext() && $fontSize > 0) {
    $fontSize--;
}
于 2012-05-21T17:14:13.337 回答