首页 > 开发 > PHP > 正文

PHP使用GIFEncoder类生成的GIF动态图片验证码

2024-05-04 22:20:08
字体:
来源:转载
供稿:网友

相信很多人都想过如何用PHP生成GIF动画来实现动态图片验证码,以下是实现过程。
ImageCode函数通过GIFEncoder类实现的GIF动画的PHP源代码,有兴趣的朋友可以研究一下。

效果如图:
代码如下:
/**
 
* ImageCode 生成GIF图片验证
 
* @param $string 字符串
 
* @param $width 宽度
 
* @param $height 高度
 
* */
 
function ImageCode($string = '', $width = 75, $height = 25)
 
{
 
$authstr = $string ? $string : ((time() % 2 == 0) ? mt_rand(1000, 9999) : mt_rand(10000, 99999));
 
$board_width = $width;
 
$board_height = $height;
 
// 生成一个32帧的GIF动画
 
for($i = 0; $i < 32; $i++)
 
{
 
ob_start();
 
$image = imagecreate($board_width, $board_height);
 
imagecolorallocate($image, 0,0,0);
 
// 设定文字颜色数组
 
$colorList[] = ImageColorAllocate($image, 15,73,210);
 
$colorList[] = ImageColorAllocate($image, 0,64,0);
 
$colorList[] = ImageColorAllocate($image, 0,0,64);
 
$colorList[] = ImageColorAllocate($image, 0,128,128);
 
$colorList[] = ImageColorAllocate($image, 27,52,47);
 
$colorList[] = ImageColorAllocate($image, 51,0,102);
 
$colorList[] = ImageColorAllocate($image, 0,0,145);
 
$colorList[] = ImageColorAllocate($image, 0,0,113);
 
$colorList[] = ImageColorAllocate($image, 0,51,51);
 
$colorList[] = ImageColorAllocate($image, 158,180,35);
 
$colorList[] = ImageColorAllocate($image, 59,59,59);
 
$colorList[] = ImageColorAllocate($image, 0,0,0);
 
$colorList[] = ImageColorAllocate($image, 1,128,180);
 
$colorList[] = ImageColorAllocate($image, 0,153,51);
 
$colorList[] = ImageColorAllocate($image, 60,131,1);
 
$colorList[] = ImageColorAllocate($image, 0,0,0);
 
$fontcolor = ImageColorAllocate($image, 0,0,0);
 
$gray = ImageColorAllocate($image, 245,245,245);
 
$color = imagecolorallocate($image, 255,255,255);
 
$color2 = imagecolorallocate($image, 255,0,0);
 
imagefill($image, 0, 0, $gray);
 
$space = 15; // 字符间距
 
if($i > 0) // 屏蔽第一帧
 
{
 
for ($k = 0; $k < strlen($authstr); $k++)
 
{
 
$colorRandom = mt_rand(0,sizeof($colorList)-1);
 
$float_top = rand(0,4);
 
$float_left = rand(0,3);
 
imagestring($image, 6, $space * $k, $top + $float_top, substr($authstr, $k, 1), $colorList[$colorRandom]);

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表