我想用php写一个包装文本到图像。这是一个demo。如果您将下面的文本复制,粘贴并发送到demo,您会注意到某些行被扭曲,并且有一些段落空格不能存在。我想要几个小时的代码。我无法理解问题出在哪里。有人帮帮我吗?
示例文字:
Lorem ipsum dolor坐下来,精神上的精神。 Sed ut justo consectetur,cursus lorem vitae,accumsan lorem。 Cras eu odio vulputate,rhoncus dui vel,aliquam lorem。 Fusce scelerisque facilisis lacus,quis malesuada justo placerat nec。 Curabitur elementum mattis nisl,sed sodales mauris congue et。 Nunc velit mauris,accumsan a dictum vitae,pellentesque luctus leo。在venenatis orci的Maecenas。 Suspendisse sed neque magna。 Praesent vitae sapien porttitor diam aliquam eleifend。 Maecenas lacinia elit non velit vehicula rutrum。桑达 ultricies mauris vitae dapibus tempor。 Praesent eros metus,euismod ut est eget,rhoncus iaculis lorem。 Ut aliquet dictum ligula lobortis 的cursus。 Sed mattis ante ut odio tincidunt venenatis。 Donec euismod quam sit amet velit tincidunt,ut convallis ligula tempor。 Quisque tincidunt elit sem,quis laoreet orci accumsan in。
$mx = imagesx($im); // Width of the created image
$my = imagesy($im); // Height of the image
//TEXT VARS/////////
$main_text = $text; // $text variable comes directly from the form
$main_text_size = 20; // $text font size
$words = explode(' ', $main_text);
$lines = array($words[0]);
$currentLine = 0;
for($i = 1; $i < count($words); $i++)
{
$lineSize = imagettfbbox($main_text_size, 0, $font, $lines[$currentLine] . ' ' . $words[$i]);
if($lineSize[2] - $lineSize[0] < ($mx-20))
{
$lines[$currentLine] .= ' ' . $words[$i];
}
else
{
$currentLine++;
$lines[$currentLine] = $words[$i];
}
}
$line_count = 1;
// Loop through the lines and place them on the image
foreach ($lines as $line)
{
$line_box = imagettfbbox($main_text_size, 0, $font, "$line");
$line_height = $line_box[1]-$line_box[7];
$line_y = (($line_height+4) * $line_count);
imagettftext($im, $main_text_size, 0, 5, $line_y, $black, $font, $line);
// Increment Y so the next line is below the previous line
$line_count ++;
}
imagepng($im, 'image.png');
imagedestroy($im);