ストローク: void imagetextouter (リソース画像、int サイズ、int x、int y、文字列の色、文字列フォントファイル、文字列テキスト、文字列のアウターカラー)
imagetextouter() は、座標 x、y (左上隅は 0, 0) から開始して、image で表される画像上に文字列テキストを描画します。色は color、境界線に使用される色は outcolor、指定された TrueType です。 by fontfile は使用するフォントファイルです。
フォントファイルが指定されていない場合は、gdの内部フォントが使用されます。 PHPが使用するgdライブラリによっては、フォントファイルが「/」で始まらない場合、ファイル名に「.ttf」が付加され、ライブラリ定義のフォントパスが検索されます。
フォント ファイルが指定されている場合、x、y で表される座標は最初の文字の基点 (おそらく文字の左下隅) を定義します。それ以外の場合、x、y は最初の文字の右上隅を定義します。
text は、フォント内の最初の 255 文字を超える文字にアクセスするために、一連の utf-8 文字 ({ 形式) を含めることができるテキスト文字列です。
/**
* gd画像テキスト外側
*
* @copyright ugia.cn
*/
関数 imagetextouter(&$im, $size, $x, $y, $color, $fontfile, $text, $outer)
{
if (!function_exists('imagecolorallocatehex'))
{
関数 imagecolorallocatehex($im, $s)
{
if($s{0} == "#") $s = substr($s,1);
$bg_dec = hexdec($s);
return imagecolorallocate($im,
($bg_dec & 0xff0000) >> 16、
($bg_dec & 0x00ff00) >> 8、
($bg_dec & 0x0000ff)
);
}
}
$ttf = false;
if (is_file($fontfile))
{
$ttf = true;
$area = imagettfbbox($size, $angle, $fontfile, $text);
$width = $area[2] - $area[0] + 2;
$height = $area[1] - $area[5] + 2;
}
それ以外は
{
$width = strlen($text) * 10;
$高さ = 16;
}
$im_tmp = imagecreate($width, $height);
$white = imagecolorallocate($im_tmp, 255, 255, 255);
$black = imagecolorallocate($im_tmp, 0, 0, 0);
$color = imagecolorallocatehex($im, $color);
$outer = imagecolorallocatehex($im, $outer);
if ($ttf)
{
imagettftext($im_tmp, $size, 0, 0, $height - 2, $black, $fontfile, $text);
imagettftext($im, $size, 0, $x, $y, $color, $fontfile, $text);
$y = $y - $height + 2;
}
それ以外は
{
画像文字列($im_tmp, $size, 0, 0, $text, $black);
画像文字列($im, $size, $x, $y, $text, $color);
}
for ($i = 0; $i
{
for ($j = 0; $j
{
$c = imagecolorat($im_tmp, $i, $j);
if ($c !== $white)
{
imagecolorat ($im_tmp, $i, $j - 1) != $white || imagesetpixel($im, $x + $i, $y + $j - 1, $outer);
imagecolorat ($im_tmp, $i, $j + 1) != $white || imagesetpixel($im, $x + $i, $y + $j + 1, $outer);
imagecolorat ($im_tmp, $i - 1, $j) != $white || imagesetpixel($im, $x + $i - 1, $y + $j, $outer);
imagecolorat ($im_tmp, $i + 1, $j) != $white || imagesetpixel($im, $x + $i + 1, $y + $j, $outer);
// 取消释、花火の発光効果と同じ
/*
imagecolorat ($im_tmp, $i - 1, $j - 1) != $white || imagesetpixel($im, $x + $i - 1, $y + $j - 1, $outer);
imagecolorat ($im_tmp, $i + 1, $j - 1) != $white || imagesetpixel($im, $x + $i + 1, $y + $j - 1, $outer);
imagecolorat ($im_tmp, $i - 1, $j + 1) != $white || imagesetpixel($im, $x + $i - 1, $y + $j + 1, $outer);
imagecolorat ($im_tmp, $i + 1, $j + 1) != $white || imagesetpixel($im, $x + $i + 1, $y + $j + 1, $outer);
*/
}
}
}
imagedestroy($im_tmp);
}
//用法例:
header("コンテンツタイプ: 画像/png");
$im = imagecreatefromjpeg("bluesky.jpg");
$white = imagecolorallocate($im, 255,255,255);
imagetextouter($im, 9, 10, 20, '#000000', "simsun.ttc", '新年快乐', '#ffffff');
imagetextouter($im, 2, 10, 30, '#ffff00', "", 'hello, world!' , '#103993');
imagepng($im);
imagedestroy($im);
?>