I'm training my PHP skills to generate images. I need only one thing which doesn't work. I don't think it's possible on the way I want, but there should be another way. The code I already have is this:
<?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);
?>
Which results in this image:
It works fine, but my name, Wietse, should be Bold. I don't think it's possible to do this on a simple way, but it should be possible. I can add another imagettftext()
with a Bold Arial font, but the Lorum ipsum text should start next to the name and the second line should continue on the same X coordinates as the name. Like it is now.
I also have another wish, but I think it's too difficult because this text can have any position. But if someone knows how to do this he's great. This is that the link (http://www.google.com) has an underline. I don't think I need to tell further information.
Thanks on purpose!
I've found a solution myself to get the name in bold. I have no desire to explain everything because I am the one who asked this question, so I just give the new code with the resulting image. Tomorrow I'll try to give an underline to the link. If anyone knows the answer to that I'll accept that answer. Note that I've changed the code a little more which isn't necessary to get the code working.
The code:
This results in this image:
Try using outline / stroke. How, please check on this code.
result : http://wmh.github.io/hunbook/_static/examples/gd-imagettftext/003.jpg
go to : http://wmh.github.io/hunbook/examples/gd-imagettftext.html
In almost every font, this solution will work.
If you are creating this text:
and if you want bold, you should add these:
For a best visualization, use
-$textColor
; this will show a better view of the text.