欢迎光临
我们一直在努力

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

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

  }

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:枫叶博客 » PHP如何让生成GIF格式的图片验证码

分享到: 生成海报
avatar

热门文章

  • 评论 69

    Captcha Code

    • QQ号
    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址
    1. #1
      avatar

      明天你还会更新的吧,明天我在来.

      脚跟疼10年前 (2012-06-05)未探索到的地区回复
    2. #2
      avatar

      不错,这种好文章不多,博主辛苦了。

      鼻炎治疗门户网介绍10年前 (2012-06-05)未探索到的地区回复
    3. #3
      avatar

      动态图片验证码

      安慰人的话10年前 (2012-06-05)未探索到的地区回复
    4. #4
      avatar

      要学学

      fashion jewelry10年前 (2012-06-18)未探索到的地区回复
    5. #5
      avatar

      已阅,鉴定为专业文章!

      外汇返佣10年前 (2012-06-18)未探索到的地区回复
    6. #6
      avatar

      好难呀

      细石混凝土泵10年前 (2012-06-19)未探索到的地区回复
    7. #7
      avatar

      想和博主换个链接,不知道可以不?木浴桶www.bl12345.com可以的话给我留言..

      木浴桶10年前 (2012-06-19)未探索到的地区回复
    8. #8
      avatar

      这篇文章说的很有哲理,值得我们学习珍惜!http://www.jiajiao315.cn

      长春英语辅导10年前 (2012-06-20)未探索到的地区回复
    9. #9
      avatar

      来拿看看楼主

      真石漆搅拌机10年前 (2012-06-20)未探索到的地区回复
    10. #10
      avatar

      第一次来支持你。

      http://www.255tv.com/10年前 (2012-06-22)未探索到的地区回复
    11. #11
      avatar

      永远支持博主。

      http://pueh.info/10年前 (2012-06-24)未探索到的地区回复
    12. #12
      avatar

      谢谢博主的整理与分享

      fashion sunglasses10年前 (2012-06-25)未探索到的地区回复
    13. #13
      avatar

      用得着

      Crystallized earrings10年前 (2012-06-26)未探索到的地区回复
    14. #14
      avatar

      都是代码,看的我头都大没搞懂几个!

      捕鱼达人单机版10年前 (2012-06-29)未探索到的地区回复
    15. #15
      avatar

      第一次来支持你。

      http://shiyige.info/10年前 (2012-06-30)未探索到的地区回复
    16. #16
      avatar

      没事做,来你博客看看。

      http://lengh.info/10年前 (2012-07-04)未探索到的地区回复
    17. #17
      avatar

      明天你还会更新的吧,明天我在来.

      http://bengg.info/10年前 (2012-07-05)未探索到的地区回复
    18. #18
      avatar

      其实博主说得也很有道理

      http://www.fuiy.info/10年前 (2012-07-07)未探索到的地区回复
    19. #19
      avatar

      说的不错,学习了

      上海做网站10年前 (2012-07-09)未探索到的地区回复
    20. #20
      avatar

      来学习学习一下博客怎么写文章

      充气娃娃10年前 (2012-07-12)未探索到的地区回复
    21. #21
      avatar

      第一次来支持你。

      过敏性鼻炎引发哮喘10年前 (2012-07-15)未探索到的地区回复
    22. #22
      avatar

      博主做的这个博客很专业..长春搬家公司www.hxrccbj.com会大力支持博主!

      长春搬家公司10年前 (2012-07-17)未探索到的地区回复
    23. #23
      avatar

      来看一下博客的文章写得怎么样

      日本充气娃娃10年前 (2012-07-17)未探索到的地区回复
    24. #24
      avatar

      这个功能貌似有开源的了哦

      丰禾棋牌10年前 (2012-07-23)未探索到的地区回复
    25. #25
      avatar

      我想学,但是我估计我这个水平,够呛

      砂浆泵10年前 (2012-08-03)未探索到的地区回复
    26. #26
      avatar

      额,不错啊,专业

      vet medicine10年前 (2012-08-10)未探索到的地区回复
    27. #27
      avatar

      支持一下,谢谢分享。

      厚街婚纱摄影10年前 (2012-08-11)未探索到的地区回复
    28. #28
      avatar

      不错 支持原创

      什么是屌丝10年前 (2012-08-13)未探索到的地区回复
    29. #29
      avatar

      不错加油 支持

      天蝎座和什么座最配10年前 (2012-08-13)未探索到的地区回复
    30. #30
      avatar

      博客你好,我来支持你!

      金镶玉吊坠10年前 (2012-08-20)未探索到的地区回复
    31. #31
      avatar

      博主的写作水平不错啊!

      水晶吊坠10年前 (2012-08-22)未探索到的地区回复
    32. #32
      avatar

      看着蛮复杂的、

      屠龙10年前 (2012-08-24)未探索到的地区回复
    33. #33
      avatar

      一看就是程序员高手,这种效果不错,用到的地方比较多!

      天天特价10年前 (2012-08-29)未探索到的地区回复
    34. #34
      avatar

      最新准备学习做博客了,做个王德裕堂博客,来博主这里取点精华~呵呵!

      王德裕堂10年前 (2012-09-03)未探索到的地区回复
    35. #35
      avatar

      网站推广,离不开站长们的团结合作: 在此路过。

      可肤冰肌白10年前 (2012-09-03)未探索到的地区回复
    36. #36
      avatar

      不错,支持一个!我也刚搭建一个博客,有时间过来看看!给点建议!

      火炎10年前 (2012-09-07)未探索到的地区回复
    37. #37
      avatar

      似乎在打码的人面前,一切都是浮云撒!

      锁具批发10年前 (2012-09-13)未探索到的地区回复
    38. #38
      avatar

      我看代码就头疼,怎么能学会啊

      港城婚纱摄影10年前 (2012-09-17)未探索到的地区回复
    39. #39
      avatar

      仔细看了博主的所有文章,说实话文章写的还是很不错的,看得出来博主对这个博客很用心啊,这么长时间都坚持下来了精神难能可贵,做独立博客最拍的就是“坚持”二字,最重要的也是“坚持”二字,只要坚持的人都成功了,总体来说博客很漂亮,文章也很用心,写的也很好,做的不错。继续加油!我最近也建了一个博客,望得到博主的指点指点,小弟感激不尽,我的网站 http://www.li63.com

      礼仪之邦10年前 (2012-09-18)未探索到的地区回复
    40. #40
      avatar

      可否小站做个链接!小站是个专门收集优秀博客的网站,希望能够让更多的人看到这些优秀博客,非常感谢!

      114博客大全10年前 (2012-09-20)未探索到的地区回复
    41. #41
      avatar

      博客做的不错,来踩踩,求回访

      进口车10年前 (2012-09-21)未探索到的地区回复
    42. #42
      avatar

      博主好,看下可否交换下连接

      百度贴吧发帖器10年前 (2012-09-22)未探索到的地区回复
    43. #43
      avatar

      你喜欢你的博客,做个友链不?我的两个博客百分之百是原创的,当站长很苦逼啊。我现在两个中文博客才pr1。我一个影评博客一个生活博客。交叉链接等等都可以,我中文bsp也很多,英文独立博客也有不少

      潇遥10年前 (2012-09-25)未探索到的地区回复
    44. #44
      avatar

      你喜欢你的博客,做个友链不?我的两个博客百分之百是原创的,当站长很苦逼啊。我现在两个中文博客才pr1。我一个影评博客一个生活博客。交叉链接等等都可以,我中文bsp也很多,英文独立博客也有不少。我的生活博客域名是life.jrubbish.com

      潇遥10年前 (2012-09-25)未探索到的地区回复
    45. #45
      avatar

      楼主写的不错啊

      大连海参10年前 (2012-09-25)未探索到的地区回复
    46. #46
      avatar

      路过,学习一下

      文胸10年前 (2012-09-25)未探索到的地区回复
    47. #47
      avatar

      学习了,感谢楼主的分享。

      虎门婚纱摄影10年前 (2012-09-26)未探索到的地区回复
    48. #48
      avatar

      分析的很透彻,很欣赏你的看法,学习了。

      火车票查询时刻表10年前 (2012-09-27)未探索到的地区回复
    49. #49
      avatar

      支持博主下

      西安广告公司10年前 (2012-09-27)未探索到的地区回复
    50. #50
      avatar

      博主你好,我的站:广州私家侦探www.e1993.com互换个链接怎么样,我关注你的博客很久了!

      广州私家侦探10年前 (2012-09-27)未探索到的地区回复
    51. #51
      avatar

      来看一下博主的文章写得怎么样

      耐克空军一号10年前 (2012-09-29)未探索到的地区回复
    52. #52
      avatar

      必须要支持一下,博主的博客写的很有 深度。以后www.yueshai.com会常来光顾的

      悦晒网10年前 (2012-09-29)未探索到的地区回复
    53. #53
      avatar

      奇怪了,我的评论怎么没有显示呢

      悦晒网10年前 (2012-09-29)未探索到的地区回复
    54. #54
      avatar

      不错,值得学习

      万事如意10年前 (2012-10-05)未探索到的地区回复
    55. #55
      avatar

      很多的,以后会多多观看的

      悦晒网10年前 (2012-10-06)未探索到的地区回复
    56. #56
      avatar

      分析的很透彻,很欣赏你的看法,学习了。

      火车列车时刻表10年前 (2012-10-07)未探索到的地区回复
    57. #57
      avatar

      过节之后先来博主博客看看..不知道博主过的怎么样哦?南京搬家公司http://www.bjhxrnj.com永远支持博主!

      南京搬家公司10年前 (2012-10-08)未探索到的地区回复
    58. #58
      avatar

      鉴定为专业的文章。

      电动玩具10年前 (2012-10-09)未探索到的地区回复
    59. #59
      avatar

      国庆过完,工作开始,一起努力

      除螨吸尘器10年前 (2012-10-09)未探索到的地区回复
    60. #60
      avatar

      分析的很透彻,很欣赏你的看法,学习了。

      订火车票10年前 (2012-10-10)未探索到的地区回复
    61. #61
      avatar

      过来转转,不错

      欧蒂芙喷立婷10年前 (2012-10-10)未探索到的地区回复
    62. #62
      avatar

      分析的很透彻,很欣赏你的看法,学习了。

      电视棒最新版本10年前 (2012-10-11)未探索到的地区回复
    63. #63
      avatar

      过来转转,写的很好

      蜗牛霜10年前 (2012-10-11)未探索到的地区回复
    64. #64
      avatar

      分析的很透彻,很欣赏你的看法,学习了。

      列车时刻表查询最新10年前 (2012-10-11)未探索到的地区回复
    65. #65
      avatar

      我也希望能像博主一样分享经验http://blog.xtcsu.com

      php网站建设10年前 (2012-10-13)未探索到的地区回复
    66. #66
      avatar

      佩服,佩服,可以转载吗?

      电话订火车票10年前 (2012-10-16)未探索到的地区回复
    67. #67
      avatar

      不错啊, 很有条理

      天猫商城10年前 (2012-10-16)未探索到的地区回复
    68. #68
      avatar

      很欣赏你的看法,受益,学习了。

      火车时刻表10年前 (2012-10-19)未探索到的地区回复
    69. #69
      avatar

      不错,学习了

      轻文艺10年前 (2012-11-19)国内网友回复

    枫叶博客

    联系我们联系我们

    登录

    忘记密码 ?