使用php

时间:2016-03-08 20:52:06

标签: php html

我的任务很棒!我已经成功地将文本写入图像然后使用php显示图像,但是我遇到的问题是使字体大小完美并适合包含的区域。我正在使用imagettftext()

我让这个工作正常,但是当我将文本移动到所需位置时,我手动更改字体然后使其适合。我想发短信完美地填充一个"框"在图像内。

这是我的代码

Main.php

    check out the promo code below<br />

    <img src="imagem.php?promo=DISH120" alt="" />

imagem.php       $ font =&#39; font-type.ttf&#39;;

    $rImg = ImageCreateFromJPEG( "test.jpg" );

    $color = imagecolorallocate($rImg, 255, 255, 255);

    imagettftext($rImg, 20, 0, 660, 130, $color, $font, urldecode($_GET['promo']));

    header('Content-type: image/jpeg');
    imagejpeg($rImg, NULL,100);

这是我正在写的图像 image

我希望文本写在代码旁边的右下方,但是当我使字体足够大以匹配CODE高度时,它会变宽。

ADDITION

 <?php 
function makeTextBlock($text, $fontfile, $fontsize, $width) 
{    
    $words = explode(' ', $text); 
    $lines = array($words[0]); 
    $currentLine = 0; 
    for($i = 1; $i < count($words); $i++) 
    { 
        $lineSize = imagettfbbox($fontsize, 0, $fontfile, $lines[$currentLine] . ' ' . $words[$i]); 
        if($lineSize[2] - $lineSize[0] < $width) 
        { 
            $lines[$currentLine] .= ' ' . $words[$i]; 
        } 
        else 
        { 
            $currentLine++; 
            $lines[$currentLine] = $words[$i]; 
        } 
    } 

    return implode("\n", $lines); 
} 
?>

我发现这个函数将文本字符串格式化为给定宽度的文本块,这是我想要实现的,但我不知道如何集成它。我想要一个宽度和高度永远不会改变的盒子,它将填充其字符数将改变的文本。

1 个答案:

答案 0 :(得分:1)

这听起来像是您正在使用的字体的问题。尽量确保字体与图像中文本的字体相匹配,这样当您增加字体大小以适合图像时,它就不会太宽。

我要指出的其他事情:

  1. 根据您的操作,我不建议使用$_GET参数。
  2. 完成后,您应该从内存中删除图片,如下所示:imagedestroy($rImg);