imagettftext():计算字体大小以确保文本适合图像宽度


imagettftext(): calculate font size to ensure text fits image width

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

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

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

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

scale = targetWidth / bboxWidth;

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

fontSize = 20 * scale;

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

请参阅此处的imagettfbox文档。

while (itsTooBigAccordingToimagettftext() && $fontSize > 0) {
    $fontSize--;
}