代码如下:

<?php

header("Content-type: text/html; charset=utf8");


/*

 * 函数名:createImage

 * 描述:获取验证图片验证码

 * @param $width 画布的宽

 * @param $height 画布的高

 * @param $number 验证码位数

 */

function createImage($width,$height,$number){

// 1.创建画布

// imagecreatetruecolor执行创建操作(创建一幅真彩色的图像) 

// $width:画布的宽 $height:画布的高

$img = imagecreatetruecolor($width, $height); 


// 2.为画布填充背景色

// mt_rand函数返回0-120随机数

// imagecolorallocate为一幅图像分配颜色

  $bgColor = imagecolorallocate($img, mt_rand(0,120), mt_rand(0,120), mt_rand(0,120));

  // 填充操作

  imagefill($img, 1, 1, $bgColor);

  // 3.定义在画布上的显示文字

  // 显示随机字符的范围

  $arr = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));

  // 得到指定位数的随机字符

  $str = '';

  // 把数组中的元素按随机顺序重新排序

  shuffle($arr);

  // 返回包含随机键名的数组 

  $keyArr = array_rand($arr,$number);

foreach ($keyArr as $value) {

$str .= $arr[$value];

}


  // 4.将字符写入到画布

  $span = ceil($width/($number+1));

for ($i=1; $i <= $number; $i++) {

// 为画布创建画笔色

$charColor = imagecolorallocate($img, mt_rand(120,255), mt_rand(120,255), mt_rand(120,255));

// 水平地画一行字符串

// $img:画布

// 5:字体

// $span*$i:x轴坐标

// 12:Y坐标

// $str[$i-1]:字符串

// $charColor:颜色

imagestring($img, 5, $span*$i, 12, $str[$i-1], $charColor);

}

 

// 5.创建干扰线

for ($i=0; $i < 8; $i++) {

// 创建干扰线颜色

$linColor = imagecolorallocate($img, mt_rand(75,150), mt_rand(75,150), mt_rand(75,150));

// 创建干扰线

imageline($img, mt_rand(0,$width-1), mt_rand(0,$height-1), mt_rand(0,$width-1), mt_rand(0,$height-1), $linColor);

}

 

// 6.显示图片

header('content-type:image/png');

// 清空输出缓冲区

ob_clean();

// 打印图片

imagepng($img);

}


// 调用创建验证码图片函数

createImage(150,40,4);

运行结果如下:

QQ截图20181018153429.png

QQ截图20181018153454.png