PHP生成海报 文字描边,PHP在图片上添加描边字和马赛克

/**

* GD image text outer

*

* @copyright UGiA.CN

* @link www.ugia.cn/?p=88

*/

function imagetextouter(&$im, $size, $x, $y, $color, $fontfile, $text, $outer)

{

if (!function_exists('ImageColorAllocateHEX'))

{

function 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;

}

else

{

$width  = strlen($text) * 10;

$height = 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;

}

else

{

imagestring($im_tmp, $size, 0, 0, $text, $black);

imagestring($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);

// 取消注释,与Fireworks的发光效果相同

/*

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);

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值