用PHP实现渐变字体输出
1,原理:用PHP实现渐变字体输出,主要用到php的gd里面的imagettftext函数:
详细介绍 PHP 的GD库里面的 imageTtfText()函数
https://www.zzzyk.com/show/ca29f36bc68c1431.htm
2,源码:
1)php实现渐变文字源码如下:
<?php
Header("Content-type: image/png");
$txt=$_GET[txt]."(易做图刷新我会变色哦)";
$i=strlen($txt);
$width=16*strlen($txt);
$height=42*(int)($width/500+1);
$im = imagecreate($width,$height);
$background_color=imageColorAllocate($im,223,223,223);
$white=imageColorAllocate($im,255,255,255);
$color1=imageColorAllocate($im,255,128,128);
$red=imageColorAllocate($im,255,0,0);
$color3=imageColorAllocate($im,128,64,64);
$yellow=imageColorAllocate($im,255,255,0);
$color4=imageColorAllocate($im,255,128,0);
$color5=imageColorAllocate($im,128,128,0);
$green=imageColorAllocate($im,0,255,0);
$color6=imageColorAllocate($im,0,128,0);
$blue=imageColorAllocate($im,0,0,255);
$pink=imageColorAllocate($im,255,0,128);
$black=imageColorAllocate($im,0,0,0);
$array=array($color1,$red,$color3,$color4,$color5,$green,$color6,$blue,$pink,$black,$white);
$x=1;
$y=40;
$count=1;
for($t=0;$t<$i;$t++)
{
$temp=rand(0,10);
$color=$array[$temp];
if (ord($txt[$t]) >= 128)
{
if($x+32>500)
{
$x=1;
$y=40+$count*41;
$count++;
}
$temp=$txt[$t++].$txt[$t];
$temp=mb_convert_encoding($temp, "UTF-8", "gb2312");
imagettftext($im,24, 0, $x, $y, $color,"yizuotu.net/simsun.ttc",$temp);
$x+=32;
}
else
{
if($x+8>500)
{
$x=1;
$y=40+$count*41;
$count++;
}
imagettftext($im,24, 0, $x, $y, $color,"yizuotu.net/simsun.ttc",$txt[$t]);
$x+=16;
}
}
ImagePNG($im);
ImageDestroy($im);
?>
使用说明:将上面的代码保存为1.php!
PS:1、在浏览器中输入http://你的网址/1.php?txt=文字 可直接观看效果
PS:2、在论坛中以这样的形式发帖:{img}http://你的网址/1.php?txt=文字{/img}(实际用时把大括号换为中括号)
PS:3、如果你的空间不支持mb_convert_encoding函数,你需要有把gb2312转为utf-8的函数才能支持中文!
2)第二段参考代码文字渐变特效:
<?php
$txt="易做图渐变文字!"
$width=500//图片宽度
$height=500//图片高度
//创建一张图片
function createImg($width,$height,$txt)
{
$im = imagecreate($width, $height);
$bgcolor = imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0, 0, $bgcolor);
$black = imagecolorallocate($im, 0, 0, 0);
$font = getcwd() . "/1.TTF"
//打上文字 字体大点 记住是黑色 活着比较奇葩的颜色 不要和背景重复
imagettftext($im, 30, 0, 10, 200, $black, $font, $txt);
//然后取样覆盖颜色 从左到右边 从上到下
$red = 0
$colornum = 0
$ok = true
for ($i = 0 $i < $height $i++) {
//这里是纵向渐变
if ($ok) {
$red = 210 - $colornum * 2
$green = 176 - $colornum * 2
$blue = 102 - $colornum * 2
$color = imagecolorallocate($im, $red, $green, $blue);
$colornum++;
$ok = false
}
for ($j = 0 $j < $width $j++) {
$rs = imagecolorat($im, $j, $i);
if ($rs == 0) {
//这里不取色
} else {
$t = imagesetpixel($im, $j, $i, $color);
$ok = true
}
}
}
$newfile = getcwd() . "/font.jpg"
imagejpeg($im, $newfile, 100);
ImageDestroy($im);
}
补充:Web开发 , php ,