gpt4 book ai didi

PHP imagettftext 基线解决方法

转载 作者:可可西里 更新时间:2023-10-31 23:07:42 25 4
gpt4 key购买 nike

我写信是为了使用 PHP 将文本打印到图像上。但是,函数 imagettftext() 使用基线,而我需要文本垂直居中。

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

显然,我让你感到困惑。所以,明确一点:我知道函数 imagettfbbox()。使用该函数,我可以确定结果文本框的高度和宽度。然而,当使用 imagettftext() 打印时,它的高度对于垂直对齐完全没用,因为 Y 参数不是到框顶部的距离(甚至底部,但至少是我可以使用具有高度)但距离内文本基线的距离。

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

在答案下方查看我的最新评论,并使用此 image作为引用。

最佳答案

我不知道答案是否仍然感兴趣。但是,imagettfbbox() 函数为您提供的信息不仅仅是边界框的高度和宽度。它的设计正是为了返回 imagettftext() 所需的信息,以便根据需要管理文本。

诀窍在于从 imagettfbbox() 返回的坐标与绝对左上角无关,而是与特定文本的字体基线相关。这是因为盒子是在点坐标中指定的,而这些通常是负数。

简而言之:

$dims = imagettfbbox($fontsize, 0, $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;

这非常适合我的项目。希望对您有所帮助。

对不起英语。马尔科。

关于PHP imagettftext 基线解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com