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; 这对我的项目是完美的. 对不起英语马可. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |