PHP imagettftext基线解决方法

前端之家收集整理的这篇文章主要介绍了PHP imagettftext基线解决方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在用 PHP打印文本到图像.但是,函数imagettftext()使用基线,而我需要垂直居中的文本.

所以,我需要一种打印文本的方法,而不是从顶部到基线的距离,而是从顶部到顶部的边界框,或者我需要一种使用这种方法,我可以确定边界框顶部和基线之间的距离.

显然我很混淆你所以,要明确:我知道函数imagettfbBox().使用该功能,我可以确定生成的文本框的高度和宽度.然而,当使用imagettftext()打印时,它的高度对于垂直对齐是完全无用的,因为Y参数不是距离顶部的距离(甚至是底部,但至少我可以使用的高度)但距离文本的基线的距离.

编辑:为什么我不接受最新的答案?

请参阅下面的最新评论,并将此image作为参考.

我不知道答案是否仍然感兴趣.然而,imagettfbBox()函数给你更多的信息,而不仅仅是边框的高度和宽度.它的设计完全是为了返回imagettftext()所需的信息来管理文本.

诀窍在于,从imagettfbBox()返回的坐标与绝对左上角无关,而与特定文本的字体基线无关.这是原因,因为方框是以点坐标指定的,这些通常是负数.

简而言之:

$dims = imagettfbBox($fontsize,$font,$text);

$ascent = abs($dims[7]);
$descent = abs($dims[1]);
$width = abs($dims[0])+abs($dims[2]);
$height = $ascent+$descent;

...

// In the example code,for the vertical centering of the text,consider
// the simple following formula

$y = (($imageHeight/2) - ($height/2)) + $ascent;

这对我的项目是完美的.
希望这个帮助.

对不起英语马可.

原文链接:https://www.f2er.com/php/130958.html

猜你在找的PHP相关文章