我可以使用 GD 和 PHP 生成多行文本吗?
我正在尝试使用 GD+PHP 输出多行文本,但无法使其工作。我的 php 知识非常基础。 这是代码,知道如何输出 2 或 3 行文本吗?
$theText = (isset($_GET['caption']))? stripslashes($_GET['caption']) :'';
imagettftext($baseImage, $textSize, $textAngle, $textXposition, $textYposition, $textColor, $fontName, $theText);
I'm trying to output multiline text with GD+PHP but can't get it working. my php knowledge is really basic.
here's the code, any idea on how to output 2 or 3 lines of text?
$theText = (isset($_GET['caption']))? stripslashes($_GET['caption']) :'';
imagettftext($baseImage, $textSize, $textAngle, $textXposition, $textYposition, $textColor, $fontName, $theText);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您必须添加 x 像素才能将其向下移动到 X 位置。请记住,整个图像的高度和宽度应足以适合文本。
you have to add x pixel to move it downwards to the X position. keep in mind that your whole image should be high and wide enough to fit the text.
API 不支持它。
以下是“手动”执行此操作的代码:
http://php.net /manual/en/function.imagettftext.php#75718
It's not supported by API.
Here is the code to do it "manually":
http://php.net/manual/en/function.imagettftext.php#75718
您可以每行重复一个图像;只需将
$theText
拆分为一个数组(分隔符是 NewLine),然后对数组中的每个元素进行循环,将$textYposition
按行的高度递增(请参阅$textSize
,但实际上使用imageftbbox
会更好。阅读 PHP 手册中的页面You can repeat one imagettftext per line; just split
$theText
into an array (separator is the NewLine) and loop for each element in the array, incrementing$textYposition
by the height of the line (see$textSize
, but indeed you'll get it better usingimageftbbox
. Read the page in the PHP manual我有未知长度的字符串,但只能使用一定的宽度。所以我想出了这个。基本上它将句子分成字符。如果它碰到空格,它会检查该单词是否可以添加到前一行,如果不能,它会开始一个新行。对于超长的单词也有一个蹩脚的安全措施,它们只是被砍掉,以免脱离图像。
在我实际将文本打印到图像的阶段,我检查该行是否小于允许的最大字符数,并添加前导+尾随空格,以模仿文本对齐:居中。
不要忘记将最后一个单词也添加到一行中。您还需要检查它是否应该换行。
向图像添加线条:
I had an unknown length of string, but only a certain width to work with. So I came up with this. Basically it splits the sentence in chars. If it bumps on a whitespace, it checks if the word can be added to the previous line, if not, it starts a new line. There is also a lame safety for extra long words, who are just being chopped of, so as not to go out of the image.
In the stage where I actually print the text to the image, I check if the line is smaller than the maximum allowed characters and add leading + trailing whitespaces, to mimic text-align: center.
Don't forget to add the last word to a line as well. You also need to the the check to see if it should be on a new line or not.
Add lines to image:
我的两分钱...
(由于多行文本要求,循环添加文本)
My two cents...
(adding text in a loop because of multi-line text requirement)