枫叶博客,一个专注于分享自己学习和工作中的心得体会,欢迎大家光临!

PHP如何让生成GIF格式的图片验证码

网站技术 枫叶博客 141℃ 0评论

相信很多人都想过如何用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();

  }

转载请注明:枫叶博客 » PHP如何让生成GIF格式的图片验证码

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(69)个小伙伴在吐槽
  1. 明天你还会更新的吧,明天我在来.
    脚跟疼2012-06-05 01:21 回复
  2. 不错,这种好文章不多,博主辛苦了。
  3. 动态图片验证码
    安慰人的话2012-06-05 22:29 回复
  4. 要学学
    fashion jewelry2012-06-18 14:55 回复
  5. 已阅,鉴定为专业文章!
    外汇返佣2012-06-18 23:54 回复
  6. 好难呀
    细石混凝土泵2012-06-19 09:07 回复
  7. 想和博主换个链接,不知道可以不?木浴桶www.bl12345.com可以的话给我留言..
    木浴桶2012-06-19 13:27 回复
  8. 这篇文章说的很有哲理,值得我们学习珍惜!http://www.jiajiao315.cn
    长春英语辅导2012-06-20 09:06 回复
  9. 来拿看看楼主
    真石漆搅拌机2012-06-20 16:18 回复
  10. 第一次来支持你。
  11. 永远支持博主。
    http://pueh.info/2012-06-24 23:47 回复
  12. 谢谢博主的整理与分享
    fashion sunglasses2012-06-25 14:07 回复
  13. 用得着
  14. 都是代码,看的我头都大没搞懂几个!
  15. 第一次来支持你。
  16. 没事做,来你博客看看。
    http://lengh.info/2012-07-04 15:53 回复
  17. 明天你还会更新的吧,明天我在来.
    http://bengg.info/2012-07-05 11:06 回复
  18. 其实博主说得也很有道理
  19. 说的不错,学习了
    上海做网站2012-07-09 22:09 回复
  20. 来学习学习一下博客怎么写文章
    充气娃娃2012-07-12 17:40 回复
  21. 第一次来支持你。
  22. 博主做的这个博客很专业..长春搬家公司www.hxrccbj.com会大力支持博主!
    长春搬家公司2012-07-17 16:12 回复
  23. 来看一下博客的文章写得怎么样
    日本充气娃娃2012-07-17 21:52 回复
  24. 这个功能貌似有开源的了哦
    丰禾棋牌2012-07-23 23:47 回复
  25. 我想学,但是我估计我这个水平,够呛
    砂浆泵2012-08-03 14:38 回复
  26. 额,不错啊,专业
    vet medicine2012-08-10 13:59 回复
  27. 支持一下,谢谢分享。
    厚街婚纱摄影2012-08-11 19:22 回复
  28. 不错 支持原创
    什么是屌丝2012-08-13 11:10 回复
  29. 不错加油 支持
  30. 博客你好,我来支持你!
    金镶玉吊坠2012-08-20 12:19 回复
  31. 博主的写作水平不错啊!
    水晶吊坠2012-08-22 15:46 回复
  32. 看着蛮复杂的、
    屠龙2012-08-24 15:29 回复
  33. 一看就是程序员高手,这种效果不错,用到的地方比较多!
    天天特价2012-08-29 10:58 回复
  34. 最新准备学习做博客了,做个王德裕堂博客,来博主这里取点精华~呵呵!
    王德裕堂2012-09-03 12:02 回复
  35. 网站推广,离不开站长们的团结合作: 在此路过。
    可肤冰肌白2012-09-03 17:40 回复
  36. 不错,支持一个!我也刚搭建一个博客,有时间过来看看!给点建议!
    火炎2012-09-07 17:43 回复
  37. 似乎在打码的人面前,一切都是浮云撒!
    锁具批发2012-09-13 17:37 回复
  38. 我看代码就头疼,怎么能学会啊
    港城婚纱摄影2012-09-17 20:40 回复
  39. 仔细看了博主的所有文章,说实话文章写的还是很不错的,看得出来博主对这个博客很用心啊,这么长时间都坚持下来了精神难能可贵,做独立博客最拍的就是“坚持”二字,最重要的也是“坚持”二字,只要坚持的人都成功了,总体来说博客很漂亮,文章也很用心,写的也很好,做的不错。继续加油!我最近也建了一个博客,望得到博主的指点指点,小弟感激不尽,我的网站 www.li63.com
    礼仪之邦2012-09-18 14:32 回复
  40. 可否小站做个链接!小站是个专门收集优秀博客的网站,希望能够让更多的人看到这些优秀博客,非常感谢!
    114博客大全2012-09-20 18:32 回复
  41. 博客做的不错,来踩踩,求回访
    进口车2012-09-21 10:00 回复
  42. 博主好,看下可否交换下连接
  43. 你喜欢你的博客,做个友链不?我的两个博客百分之百是原创的,当站长很苦逼啊。我现在两个中文博客才pr1。我一个影评博客一个生活博客。交叉链接等等都可以,我中文bsp也很多,英文独立博客也有不少
    潇遥2012-09-25 09:22 回复
  44. 你喜欢你的博客,做个友链不?我的两个博客百分之百是原创的,当站长很苦逼啊。我现在两个中文博客才pr1。我一个影评博客一个生活博客。交叉链接等等都可以,我中文bsp也很多,英文独立博客也有不少。我的生活博客域名是life.jrubbish.com
    潇遥2012-09-25 09:23 回复
  45. 楼主写的不错啊
    大连海参2012-09-25 09:58 回复
  46. 路过,学习一下
    文胸2012-09-25 18:29 回复
  47. 学习了,感谢楼主的分享。
    虎门婚纱摄影2012-09-26 15:34 回复
  48. 分析的很透彻,很欣赏你的看法,学习了。
  49. 支持博主下
    西安广告公司2012-09-27 13:51 回复
  50. 博主你好,我的站:广州私家侦探www.e1993.com互换个链接怎么样,我关注你的博客很久了!
    广州私家侦探2012-09-27 17:51 回复
  51. 来看一下博主的文章写得怎么样
    耐克空军一号2012-09-29 09:11 回复
  52. 必须要支持一下,博主的博客写的很有 深度。以后www.yueshai.com会常来光顾的
    悦晒网2012-09-29 10:18 回复
  53. 奇怪了,我的评论怎么没有显示呢
    悦晒网2012-09-29 10:19 回复
  54. 不错,值得学习
    万事如意2012-10-05 18:04 回复
  55. 很多的,以后会多多观看的
    悦晒网2012-10-06 19:51 回复
  56. 分析的很透彻,很欣赏你的看法,学习了。
  57. 过节之后先来博主博客看看..不知道博主过的怎么样哦?南京搬家公司http://www.bjhxrnj.com永远支持博主!
    南京搬家公司2012-10-08 18:01 回复
  58. 鉴定为专业的文章。
    电动玩具2012-10-09 10:02 回复
  59. 国庆过完,工作开始,一起努力
    除螨吸尘器2012-10-09 10:42 回复
  60. 分析的很透彻,很欣赏你的看法,学习了。
    订火车票2012-10-10 01:13 回复
  61. 过来转转,不错
    欧蒂芙喷立婷2012-10-10 08:53 回复
  62. 分析的很透彻,很欣赏你的看法,学习了。
  63. 过来转转,写的很好
    蜗牛霜2012-10-11 09:17 回复
  64. 分析的很透彻,很欣赏你的看法,学习了。
  65. 我也希望能像博主一样分享经验http://blog.xtcsu.com
    php网站建设2012-10-13 13:59 回复
  66. 佩服,佩服,可以转载吗?
    电话订火车票2012-10-16 02:37 回复
  67. 不错啊, 很有条理
    天猫商城2012-10-16 11:34 回复
  68. 很欣赏你的看法,受益,学习了。
    火车时刻表2012-10-19 01:14 回复
  69. 不错,学习了
    轻文艺2012-11-19 15:34 回复