答案 0 :(得分:12)
使用以下功能将边框添加到文本
您可以在此处查看示例输出http://wmh.github.io/hunbook/examples/gd-imagettftext.html
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);
}
答案 1 :(得分:4)
您可以使用stil/gd-text
类库。代码示例:
<?php
require __DIR__.'/../vendor/autoload.php';
use GDText\Box;
use GDText\Color;
$im = imagecreatetruecolor(500, 500);
$backgroundColor = imagecolorallocate($im, 0, 18, 64);
imagefill($im, 0, 0, $backgroundColor);
$box = new Box($im);
$box->setFontFace(__DIR__.'/Elevant bold.ttf'); // http://www.dafont.com/elevant-by-pelash.font
$box->setFontSize(150);
$box->setFontColor(new Color(255, 255, 255));
$box->setBox(20, 20, 460, 460);
$box->setTextAlign('center', 'center');
$box->setStrokeColor(new Color(255, 75, 140)); // Set stroke color
$box->setStrokeSize(3); // Stroke size in pixels
$box->draw("Elevant"); // Text to draw
header("Content-type: image/png;");
imagepng($im, null, 9, PNG_ALL_FILTERS);
演示:
答案 2 :(得分:0)
// http://www.johnciacia.com/2010/01/04/using-php-and-gd-to-add-border-to-text/
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);
答案 3 :(得分:0)
改进的功能imagettfstroketext:圆角+更快(尤其是在宽边框上)
function imagettfstroketext(&$image, $size, $angle, $x, $y, &$textcolor, &$strokecolor, $fontfile, $text, $px) {
for($c1 = ($x-$px); $c1 <= ($x+$px); $c1++) {
$c2 = $y + round(sqrt($px*$px - ($x-$c1)*($x-$c1)));
imagettftext($image, $size, $angle, $c1, $c2, $strokecolor, $fontfile, $text);
$c3 = $y - round(sqrt($px*$px - ($x-$c1)*($x-$c1)));
imagettftext($image, $size, $angle, $c1, $c3, $strokecolor, $fontfile, $text);
}
return imagettftext($image, $size, $angle, $x, $y, $textcolor, $fontfile, $text);
}