PHP生成带有雪花背景的验证码

<?php
/*
 *
 *    php生成数字和小写字母的验证码图片
 *    Maxwin@lilybbs  2006.5
 *    自己根据实际情况修改字体及颜色
 *   
 */

 
/*
 *
 *    生成波纹,网上找的,稍微修改了一下。添加了x方向的波动
 *    可以自行修改 $i 的步长、grade来达到不同的效果
 *
 */
function wave_region($img, $x, $y, $width, $height,$grade)
{

   for ($i=0;$i<$width;$i+=2)
   {
       imagecopy($img,$img,
           $x+$i-2,$y+sin($i/10)*$grade,    //dest
           $x+$i,$y,            //src
           2,$height);
   }
   for ($i=0;$i<$height;$i+=2)
   {
       imagecopy($img,$img,
           $x+sin($i/20)*$grade,$y+$i-2,    //dest
           $x,$y+$i,            //src
           $width,2);
   }
}

//生成随机数
function mystr($length)
{
    $str = '';
    srand(microtime() * 100000);//据说php4.2以后不是必须的了
    $str = '';
    for ($i = 0; $i < $length; $i++)
    {
        $rand = rand(0,35);
        if ($rand < 10)
            $str .= $rand;
        else
            $str .= chr($rand + 87);
    }
    return $str;
}

//分离颜色RGB
function GetRValue($col)
{
    return hexdec(substr($col, 1, 2));
}

function GetGValue($col)
{
    return hexdec(substr($col, 3, 2));
}

function GetBValue($col)
{
    return hexdec(substr($col, 5, 2));
}

//////////////////////////////////////////////////////////////

header("Content-type: image/png");
//系统字体路径
$fontPath = "C:\\WINDOWS\\Fonts\\";   
//定义几个要使用的字体
$font = array ("tt1139m_.ttf", "tt0952m_.ttf", "comic.ttf", "cour.ttf", "ariblk.TTF");
$fontcolor = array("#EE3B3B", "#E066FF", "#B452CD", "#FF9900", "#009900");
//$fontColor = ar   
$fontsize = 40;    //字体大小
$strLength = 6;    //验证码位数
$str = mystr($strLength);

//生成图片
$im_w = $fontsize * $strLength + 10;
$im_h = $fontsize * 1.8;       
$im = imagecreate($im_w, $im_h);
//背景颜色
//imagecolorallocate($im, 255,255,255);
imagecolorallocatealpha($im, 255, 255, 255, 100);//使用透明背景

$col = $fontcolor[rand(1, count($fontcolor)) - 1];
$color = imagecolorallocate($im, GetRValue($col), GetGValue($col), GetBValue($col));
imagettftext($im, $fontsize, 0, 5, $fontsize*1.3, $color, $fontPath . $font[rand(1, count($font)) - 1], $str);
wave_region($im, 0, 0, $im_w, $im_h, 6);
imagepng($im);
imagedestroy($im);
?>

300*300
 文章首页关于迷茫时代关于我写意人生
版权所有:迷茫时代 All rights reserved   
执行时间:0.00711 秒