帮我用PHP GD在图像中心写文字

时间:2011-06-30 18:23:19

标签: php math gd

这是写作前的空图像

enter image description here

这是我的代码

<?php
function LoadJpeg($imgname)
{
    $im = @imagecreatefromjpeg($imgname);

    $grey = imagecolorallocate($im, 255, 255, 0);

    // The text to draw
    $text = 'http://www.stackoverflow.com';

    // Replace path by your own font path
    $font = 'CONSOLA.TTF';

    list($width, $height) = getimagesize($imgname);

    // wants to know how to use this width/height dynamically //

    imagettftext($im, 20, 45, 200, 450, $grey, $font, $text);

    return $im;
}

header('Content-Type: image/jpeg');

$img = LoadJpeg('Blue_hills.jpg');

imagejpeg($img);
imagedestroy($img);
?>

在其上书写文字后的图像

enter image description here

我想要的是将文本垂直和水平居中45度。请帮帮我。谢谢大家。

2 个答案:

答案 0 :(得分:2)

使用imagettfbbox功能检索文本呈现 所需的尺寸。然后使用该信息计算您应该在目标图像中定位的x,y坐标,以使文本对应于宽度/高度居中。

答案 1 :(得分:0)

我对PHP知之甚少(我正在进行这项工作)。

我建议制作一个新的方形图像,将其设置为带有imagecolortransparent()的透明背景。然后将文本写入透明图像。

接下来,我尝试使用imagecopyresized()将文本复制并缩放到新窗口。使用原件高度和宽度的最小值作为目标尺寸。偏移量类似于(max($ width,$ height)-min($ width,$ height))/ 2。将偏移量应用于更大的维度。