Home  >  Article  >  php教程  >  PHP生成GIF动态图片验证码

PHP生成GIF动态图片验证码

WBOY
WBOYOriginal
2016-06-21 08:51:45752browse

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

  {

  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

  {

  $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

  {

  $colorRandom = mt_rand(0,sizeof($colorList)-1);

  imagesetpixel($image, rand()%70 , rand()%15 , $colorList[$colorRandom]);

  }

  // 添加干扰线

  for($k = 0; $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();

  }

 

  有关GIFEncoder类,可在网络中得到下载~



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn