在 PHP 中从文本创建图像 - 如何制作多行?
Posted
技术标签:
【中文标题】在 PHP 中从文本创建图像 - 如何制作多行?【英文标题】:Creating IMage from Text in PHP - how can I make multiline? 【发布时间】:2009-07-08 11:49:24 【问题描述】:我有一个使用 php 从文本生成图像的脚本。它工作正常,除了我希望它生成多行文本以及不同的颜色。如何使用 PHP、GD 和 Freetype 来完成?下面是我用来生成单行文本图像的代码。
$textval = 'This is some text to be an image';
$textcolor = '666666';
$font="arial.ttf";
$size = 9;
$padding= 1;
$bgcolor= "ffffff";
$transparent = 0;
$antialias = 0;
$fontfile = $fontpath.$font;
$box= imageftbbox( $size, 0, $fontfile, $textval, array());
$boxwidth= $box[4];
$boxheight= abs($box[3]) + abs($box[5]);
$width= $boxwidth + ($padding*2) + 1;
$height= $boxheight + ($padding) + 0;
$textx= $padding;
$texty= ($boxheight - abs($box[3])) + $padding;
// create the image
$png= imagecreate($width, $height);
$color = str_replace("#","",$bgcolor);
$red = hexdec(substr($bgcolor,0,2));
$green = hexdec(substr($bgcolor,2,2));
$blue = hexdec(substr($bgcolor,4,2));
$bg = imagecolorallocate($png, $red, $green, $blue);
$color = str_replace("#","",$textcolor);
$red = hexdec(substr($textcolor,0,2));
$green = hexdec(substr($textcolor,2,2));
$blue = hexdec(substr($textcolor,4,2));
$tx = imagecolorallocate($png, $red, $green, $blue);
imagettftext( $png, $size, 0, $textx, $texty, $tx, $fontfile, $textval );
header("content-type: image/jpeg");
imagejpeg($png);
imagedestroy($png);
exit;
【问题讨论】:
【参考方案1】:添加此函数以在文本进入您的函数之前对其进行换行。
function wrap($fontSize, $angle, $fontFace, $string, $width)
$ret = "";
$arr = explode(' ', $string);
foreach ( $arr as $word )
$teststring = $ret.' '.$word;
$testbox = imagettfbbox($fontSize, $angle, $fontFace, $teststring);
if ( $testbox[2] > $width )
$ret.=($ret==""?"":"\n").$word;
else
$ret.=($ret==""?"":' ').$word;
return $ret;
来源:http://www.php.net/imagettftext
【讨论】:
我尝试使用 \n 但由于某种原因它也会按原样打印 \n :( 嗨,你能帮我吗,如何使用自定义图像背景,我正在尝试使用此功能创建验证码以上是关于在 PHP 中从文本创建图像 - 如何制作多行?的主要内容,如果未能解决你的问题,请参考以下文章
如何将位于 UI View 中的长文本标签制作成 Swift 中的多行?
如何在 PHP 中从 AUTO_INCREMENT 列中为每行检索生成的 PRIMARY KEY,并在 MySQL 中插入多行?