我正在训练PHP技能以生成图片。我只需要一件事情,但它却不起作用。我认为按照我想要的方式可能不可能实现,但应该还有另一种方法。我已经拥有的代码如下:
<?php
$textSize = 10;
$text = addslashes("Wietse: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada aliquet dolor, vitae tristique lectus imperdiet nec. Pellentesque et.");
$maxWidth = 448;
//Create image
$im = imagecreate(468, 60);
// Black background and White text
$bg = imagecolorallocate($im, 0, 0, 0);
$textColor = imagecolorallocate($im, 255, 255, 255);
// Split in multiple lines
$words = explode(' ', $text);
$lines = array();
$line = "";
foreach ($words as $word) {
$box = imagettfbbox($textSize, 0, './arial.ttf', $line . $word);
$width = $box[4] - $box[0];
if($width > $maxWidth) {
$line = trim($line);
$line .= "\n";
}
$line .= $word . ' ';
}
// Write the text in the image
imagettftext($im, $textSize, 0, 10, $textSize + 10, $textColor, './arial.ttf', $line); // write text to image
// Output the image
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
这将导致出现这张图片:
imagettftext()
,但Lorum ipsum文本应该从名称旁边开始,并且第二行应该在相同的X坐标上继续名称。就像现在这样。我还有一个愿望,但我认为这太难了,因为这个文本可以有任何位置。但如果有人知道如何做到这一点,他就很棒了。这就是链接(http://www.google.com)具有下划线。我不认为我需要再提供更多信息。谢谢!
.ttf
文件。由于斜体/粗体/删除线/下划线实际上是完全不同的字体,因此很容易找到所需字体的粗体/斜体版本。看看OP如何使用imagettfbbox($textSize, 0, './arialbd.ttf', $usernameTotal);
来设置粗体,以及imagettfbbox($textSize, 0, './arial.ttf', $line . $word);
来设置其余文本?2个不同的.ttf
文件。 - IsThisJavascript