加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP imagettftext基线解决方法

发布时间:2020-12-13 14:04:47 所属栏目:PHP教程 来源:网络整理
导读:我正在用 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;

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

对不起英语马可.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读