`
20386053
  • 浏览: 430691 次
文章分类
社区版块
存档分类
最新评论

【代码】PHP 生成GIF动画实现动态图片验证码

 
阅读更多
相信大多数的人都想过如何用PHP生成GIF动画来实现动态图片验证码,下面就为大家分享一下实现的过程。


ImageCode函数通过GIFEncoder类实现的GIF动画的PHP源代码,感兴趣的朋友可以去研究一下,O(∩_∩)O谢谢~


/**
* 调用示例
* */
session_start();
$authstr = mt_rand(1000, 9999); // 生成随机字符串
$_SESSION['verify'] = $authstr; // 记录session
ImageCode($authstr, 60); // 显示GIF动画


效果如图:http://www.phper.org.cn/content/uploadfile/201106/4d630c956a58bd4b88a4a6e0cddbb84520110622145343.gif


view sourceprint?
01.
/** (PS:T不错的php Q扣裙:276167802,验证:csl)
02.
* ImageCode 生成GIF图片验证
03.
* @param $string 字符串
04.
* @param $width 宽度
05.
* @param $height 高度
06.
* */
07.
function ImageCode($string = '', $width = 75, $height = 25)
08.
{
09.
$authstr = $string ? $string : ((time() % 2 == 0) ? mt_rand(1000, 9999) : mt_rand(10000, 99999));
10.
 
11.
$board_width = $width;
12.
$board_height = $height;
13.
// 生成一个32帧的GIF动画
14.
for($i = 0; $i < 32; $i++)
15.
{
16.
ob_start();
17.
$image = imagecreate($board_width, $board_height);
18.
imagecolorallocate($image, 0,0,0);
19.
// 设定文字颜色数组
20.
$colorList[] = ImageColorAllocate($image, 15,73,210);
21.
$colorList[] = ImageColorAllocate($image, 0,64,0);
22.
$colorList[] = ImageColorAllocate($image, 0,0,64);
23.
$colorList[] = ImageColorAllocate($image, 0,128,128);
24.
$colorList[] = ImageColorAllocate($image, 27,52,47);
25.
$colorList[] = ImageColorAllocate($image, 51,0,102);
26.
$colorList[] = ImageColorAllocate($image, 0,0,145);
27.
$colorList[] = ImageColorAllocate($image, 0,0,113);
28.
$colorList[] = ImageColorAllocate($image, 0,51,51);
29.
$colorList[] = ImageColorAllocate($image, 158,180,35);
30.
$colorList[] = ImageColorAllocate($image, 59,59,59);
31.
$colorList[] = ImageColorAllocate($image, 0,0,0);
32.
$colorList[] = ImageColorAllocate($image, 1,128,180);
33.
$colorList[] = ImageColorAllocate($image, 0,153,51);
34.
$colorList[] = ImageColorAllocate($image, 60,131,1);
35.
$colorList[] = ImageColorAllocate($image, 0,0,0);
36.
$fontcolor = ImageColorAllocate($image, 0,0,0);
37.
$gray = ImageColorAllocate($image, 245,245,245);
38.
 
39.
$color = imagecolorallocate($image, 255,255,255);
40.
$color2 = imagecolorallocate($image, 255,0,0);
41.
 
42.
imagefill($image, 0, 0, $gray);
43.
 
44.
$space = 15;        // 字符间距
45.
if($i > 0)           // 屏蔽第一帧
46.
{
47.
for ($k = 0; $k < strlen($authstr); $k++)
48.
{
49.
$colorRandom = mt_rand(0,sizeof($colorList)-1);
50.
$float_top = rand(0,4);
51.
$float_left = rand(0,3);
52.
imagestring($image, 6, $space * $k, $top + $float_top, substr($authstr, $k, 1), $colorList[$colorRandom]);
53.
}
54.
}
55.
 
56.
for ($k = 0; $k < 20; $k++)
57.
{
58.
$colorRandom = mt_rand(0,sizeof($colorList)-1);
59.
imagesetpixel($image, rand()%70 , rand()%15 , $colorList[$colorRandom]);
60.
 
61.
}
62.
// 添加干扰线
63.
for($k = 0; $k < 3; $k++)
64.
{
65.
$colorRandom = mt_rand(0, sizeof($colorList)-1);
66.
// $todrawline = rand(0,1);
67.
$todrawline = 1;
68.
if($todrawline)
69.
{
70.
imageline($image, mt_rand(0, $board_width), mt_rand(0,$board_height), mt_rand(0,$board_width), mt_rand(0,$board_height), $colorList[$colorRandom]);
71.
}
72.
else
73.
{
74.
$w = mt_rand(0,$board_width);
75.
$h = mt_rand(0,$board_width);
76.
imagearc($image, $board_width - floor($w / 2) , floor($h / 2), $w, $h,  rand(90,180), rand(180,270), $colorList[$colorRandom]);
77.
}
78.
}
79.
imagegif($image);
80.
imagedestroy($image);
81.
$imagedata[] = ob_get_contents();
82.
ob_clean(); 
83.
++$i; 
84.
}
85.
 
86.
$gif = new GIFEncoder($imagedata); 
87.
Header ('Content-type:image/gif'); 
88.
echo $gif->GetAnimation(); 
89.
}

以上是本文关于PHP 生成GIF动画实现动态图片验证码的详细叙述,希望本文对广大php开发者有所帮助,感谢阅读本文。

分享到:
评论

相关推荐

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

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

    PHP实现GIF图片验证码

    这是一个用PHP生成GIF动画来实现动态图片验证码的程序,非常实用,是php用户注册登录界面经常需要用到的验证码程序,有需要GIF动态图片验证码功能的朋友可以收藏一下。 第一步:创建ImageCode.php文件,验证码生成...

    php生成动态验证码gif图片

    这是一个通过php生成的动态验证码图片的示例,重点是可以运行哦!下面先发下效果图: 下面是php生成动态验证码需要用到的相关类和函数。 &lt;?php /** *ImageCode 生成包含验证码的GIF图片的函数 *@param $...

    PHP生成Gif图片验证码

    验证码在好多地方都要用到,这里提供一个新开发的安全验证码类,支持生成Gif图片验证码(带噪点,干扰线,网格,随机色背景,随机自定义字体,倾斜,Gif动画)。从中还可以学到如何用PHP生成Gif图片的方法。

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    PHP GIF动画生成类 PHP HTML转UBB函数 PHP XML转数组函数 PHP 缓存函数 PHP 设置COOKIE,并且加密COOKIE函数 PHP不缓存数据头 PHP伪造IP PHP全角半角转换函数 PHP农历函数 PHP分页函数 PHP判断字符串是否...

    JAVA上百实例源码以及开源项目源代码

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    JAVA上百实例源码以及开源项目

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    java开源包8

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包10

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包5

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包3

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包4

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包1

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包11

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包2

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包6

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包7

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包9

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

    java开源包101

    GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,...

Global site tag (gtag.js) - Google Analytics