相信很多人都想过如何用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]);
}
}
for ($k = 0; $k < 20; $k++)
{
$colorRandom = mt_rand(0,sizeof($colorList)-1);
imagesetpixel($image, rand()%70 , rand()%15 , $colorList[$colorRandom]);
}
// 添加干扰线
for($k = 0; $k < 3; $k++)
{
$colorRandom = mt_rand(0, sizeof($colorList)-1);
// $todrawline = rand(0,1);
$todrawline = 1;
if($todrawline)
{
imageline($image, mt_rand(0, $board_width), mt_rand(0,$board_height), mt_rand(0,$board_width), mt_rand(0,$board_height), $colorList[$colorRandom]);
}
else
{
$w = mt_rand(0,$board_width);
$h = mt_rand(0,$board_width);
imagearc($image, $board_width – floor($w / 2) , floor($h / 2), $w, $h, rand(90,180), rand(180,270), $colorList[$colorRandom]);
}
}
imagegif($image);
imagedestroy($image);
$imagedata[] = ob_get_contents();
ob_clean();
++$i;
}
$gif = new GIFEncoder($imagedata);
Header ('Content-type:image/gif');
echo $gif->GetAnimation();
}
明天你还会更新的吧,明天我在来.
不错,这种好文章不多,博主辛苦了。
动态图片验证码
要学学
已阅,鉴定为专业文章!
好难呀
想和博主换个链接,不知道可以不?木浴桶www.bl12345.com可以的话给我留言..
这篇文章说的很有哲理,值得我们学习珍惜!http://www.jiajiao315.cn
来拿看看楼主
第一次来支持你。
永远支持博主。
谢谢博主的整理与分享
用得着
都是代码,看的我头都大没搞懂几个!
第一次来支持你。
没事做,来你博客看看。
明天你还会更新的吧,明天我在来.
其实博主说得也很有道理
说的不错,学习了
来学习学习一下博客怎么写文章
第一次来支持你。
博主做的这个博客很专业..长春搬家公司www.hxrccbj.com会大力支持博主!
来看一下博客的文章写得怎么样
这个功能貌似有开源的了哦
我想学,但是我估计我这个水平,够呛
额,不错啊,专业
支持一下,谢谢分享。
不错 支持原创
不错加油 支持
博客你好,我来支持你!
博主的写作水平不错啊!
看着蛮复杂的、
一看就是程序员高手,这种效果不错,用到的地方比较多!
最新准备学习做博客了,做个王德裕堂博客,来博主这里取点精华~呵呵!
网站推广,离不开站长们的团结合作: 在此路过。
不错,支持一个!我也刚搭建一个博客,有时间过来看看!给点建议!
似乎在打码的人面前,一切都是浮云撒!
我看代码就头疼,怎么能学会啊
仔细看了博主的所有文章,说实话文章写的还是很不错的,看得出来博主对这个博客很用心啊,这么长时间都坚持下来了精神难能可贵,做独立博客最拍的就是“坚持”二字,最重要的也是“坚持”二字,只要坚持的人都成功了,总体来说博客很漂亮,文章也很用心,写的也很好,做的不错。继续加油!我最近也建了一个博客,望得到博主的指点指点,小弟感激不尽,我的网站 http://www.li63.com
可否小站做个链接!小站是个专门收集优秀博客的网站,希望能够让更多的人看到这些优秀博客,非常感谢!
博客做的不错,来踩踩,求回访
博主好,看下可否交换下连接
你喜欢你的博客,做个友链不?我的两个博客百分之百是原创的,当站长很苦逼啊。我现在两个中文博客才pr1。我一个影评博客一个生活博客。交叉链接等等都可以,我中文bsp也很多,英文独立博客也有不少
你喜欢你的博客,做个友链不?我的两个博客百分之百是原创的,当站长很苦逼啊。我现在两个中文博客才pr1。我一个影评博客一个生活博客。交叉链接等等都可以,我中文bsp也很多,英文独立博客也有不少。我的生活博客域名是life.jrubbish.com
楼主写的不错啊
路过,学习一下
学习了,感谢楼主的分享。
分析的很透彻,很欣赏你的看法,学习了。
支持博主下
博主你好,我的站:广州私家侦探www.e1993.com互换个链接怎么样,我关注你的博客很久了!
来看一下博主的文章写得怎么样
必须要支持一下,博主的博客写的很有 深度。以后www.yueshai.com会常来光顾的
奇怪了,我的评论怎么没有显示呢
不错,值得学习
很多的,以后会多多观看的
分析的很透彻,很欣赏你的看法,学习了。
过节之后先来博主博客看看..不知道博主过的怎么样哦?南京搬家公司http://www.bjhxrnj.com永远支持博主!
鉴定为专业的文章。
国庆过完,工作开始,一起努力
分析的很透彻,很欣赏你的看法,学习了。
过来转转,不错
分析的很透彻,很欣赏你的看法,学习了。
过来转转,写的很好
分析的很透彻,很欣赏你的看法,学习了。
我也希望能像博主一样分享经验http://blog.xtcsu.com
佩服,佩服,可以转载吗?
不错啊, 很有条理
很欣赏你的看法,受益,学习了。
不错,学习了