【发布时间】:2011-10-07 22:07:25
【问题描述】:
我正在写作以使用 PHP 将文本打印到图像。但是,imagettftext() 函数使用基线,而我需要将文本垂直居中。
所以,我要么需要一种方法来打印文本,其中 y 不是从顶部到基线的距离,而是从边界框的顶部到顶部,或者我需要一种方法来确定边界框顶部和基线之间的距离.
显然,我把你弄糊涂了。所以,要说清楚:我知道函数imagettfbbox()。使用该函数,我可以确定结果文本框的高度和宽度。但是,在使用imagettftext() 打印时,它的高度对于垂直对齐完全没有用,因为 Y 参数不是到框顶部(甚至是底部,但至少是我可以使用的高度)但是到文本基线的距离。
编辑:为什么我不接受最新的答案?
在答案下方查看我的最新评论,并使用此image 作为参考。
【问题讨论】:
-
你需要做的是计算你想要文本去哪里的坐标。使用 imagettfbbox 查看文本的大小,然后从图像的高度中减去它并除以 2。
-
嗯,就是这样! Imagettfbbox() 给了我边界框,很好但对于垂直对齐完全没用,因为 imagettftext 不使用到边界框顶部或底部的距离,而是使用到基线,这使得对齐文本很困难,因为我不知道基线相对于文本框的位置。
-
感谢您提出这个问题,我也在寻找答案,但似乎没有可用的答案。我正在生成一些 ID 标签,并希望名称填充可用空间。对我来说,问题是挂起的信件(qypjg ...)。带有这些字母的单词以较小的字体占用可用高度(使用 imagettfbbox 计算),但不会填充空间,因为它们挂在空间底部下方。不是世界末日,但它确实让事情看起来不一致和偏离中心。
标签: php imagettftext baseline