我的任务很棒!我已经成功地将文本写入图像然后使用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);
我希望文本写在代码旁边的右下方,但是当我使字体足够大以匹配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);
}
?>
我发现这个函数将文本字符串格式化为给定宽度的文本块,这是我想要实现的,但我不知道如何集成它。我想要一个宽度和高度永远不会改变的盒子,它将填充其字符数将改变的文本。
答案 0 :(得分:1)
这听起来像是您正在使用的字体的问题。尽量确保字体与图像中文本的字体相匹配,这样当您增加字体大小以适合图像时,它就不会太宽。
我要指出的其他事情:
$_GET
参数。imagedestroy($rImg);