我在训练我的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);
?>
这会导致在此图像中:
它工作正常,但我的名字,Wietse,应该大胆。 我不认为这是可能做到这一点的一个简单的方法,但它应该是可能的。 我可以添加其他imagettftext()
用粗体Arial字体,但Lorum存有文本应该开始旁边的名称和第二行应继续在同一坐标X作为名称。 就像现在。 我也有另外一个心愿,但我认为它太困难,因为这段文字可以有任意位置。 但是,如果有人知道如何做到这一点,他是伟大的。 这是一个链接( http://www.google.com )具有下划线。 我不认为我需要告诉更多的信息。
谢谢你故意的!
Answer 1:
在几乎所有的字体,这种解决方案会奏效。
如果您要创建这样的文字:
imagettftext($jpg_image, 35, 0, $x, $y, $color, $font_path, $text2);
如果你想大胆,你要添加这些:
imagettftext($jpg_image, 35, 0, $x, $y, $color, $font_path, $text2);
imagettftext($jpg_image, 35, 0, $x, $y+1, $color, $font_path, $text2);
imagettftext($jpg_image, 35, 0, $x, $y+2, $color, $font_path, $text2);
imagettftext($jpg_image, 35, 0, $x+1, $y, $color, $font_path, $text2);
imagettftext($jpg_image, 35, 0, $x+2, $y, $color, $font_path, $text2);
Answer 2:
我已经找到了解决自己粗体得到名字。 我不想解释一切,因为我是一个谁问的这个问题,所以我只给有所得图像的新代码。 明天我会尽力给出一个下划线的链接。 如果有人知道这个问题的答案,我会接受的答案。 请注意,我已经改变了代码多一点这是没有必要让代码工作。
代码:
<?php
$username = 'WietsedeVries';
$textSize = 10;
$text = addslashes("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed malesuada aliquet dolor, vitae tristique http://www.google.com 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);
// Write Bold Username in image
$usernameTotal = '@' . $username . ':';
imagettftext($im, $textSize, 0, 10, $textSize + 10, $textColor, './arialbd.ttf', $usernameTotal);
// Create white space with the width of the username
$usernameBox = imagettfbbox($textSize, 0, './arialbd.ttf', $usernameTotal);
$usernameWidth = $usernameBox[4] - $usernameBox[0];
$whiteSpace = '';
$whiteSpaceWidth = 0;
while($whiteSpaceWidth < $usernameWidth) {
$whiteSpace .= ' ';
$whiteSpaceBox = imagettfbbox($textSize, 0, './arial.ttf', $whiteSpace);
$whiteSpaceWidth = $whiteSpaceBox[4] - $whiteSpaceBox[0];
}
// Split in multiple lines
$words = explode(' ', $text);
array_unshift($words, $whiteSpace);
$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', $whiteSpace . ' ' . $line);
// Output the image
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
这导致在此图像中:
Answer 3:
尝试使用大纲/行程。 怎么样,请检查该代码。
function imagettfstroketext(&$image, $size, $angle, $x, $y, &$textcolor, &$strokecolor, $fontfile, $text, $px) {
for($c1 = ($x-abs($px)); $c1 <= ($x+abs($px)); $c1++)
for($c2 = ($y-abs($px)); $c2 <= ($y+abs($px)); $c2++)
$bg = imagettftext($image, $size, $angle, $c1, $c2, $strokecolor, $fontfile, $text);
return imagettftext($image, $size, $angle, $x, $y, $textcolor, $fontfile, $text);
}
$font_color = imagecolorallocate($im, 255, 255, 255);
$stroke_color = imagecolorallocate($im, 0, 0, 0);
imagettfstroketext($im, 60, 10, 300, 130, $font_color, $stroke_color, "wqy-microhei.ttc", "简体繁體", 2);
结果: http://wmh.github.io/hunbook/_static/examples/gd-imagettftext/003.jpg
请访问: http://wmh.github.io/hunbook/examples/gd-imagettftext.html
Answer 4:
为得到最佳的可视化,使用-$textColor
; 这将显示文本的更好的视野。
文章来源: PHP imagettftext partially bold