当前位置:编程学习 > php >>

用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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,