慕粉1505418636
2019-09-03 19:15
<?php /** * 生成验证码 * @param integer $type 类型0:纯数字 类型1:字母 类型2:数字+字母 * @param integer $length 验证码长度 * @param integer $width 画布宽度 * @param integer $height 画布高度 * @return string 验证码字符串 */ function generateVerify($type=2, $length=4, $width=100, $height=30) { // 新建一个真彩色图像 $image = imagecreatetruecolor($width, $height); // 为一副图像分配颜色 $white = imagecolorallocate($image, 255, 255, 255); // 画一矩形并填充 imagefilledrectangle($image, 0, 0, $width, $height, $white); function randColor($image) { return imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); } switch($type) { // 产生随机数字 case 0: $str = join('', array_rand(range(0,9), $length)); break; // 产生随机字母 case 1: $str = join('', array_rand(array_flip(array_merge(range('a', 'z'), range('A', 'Z'))), $length)); break; // 产生随机数字字母 case 2: $str = join('', array_rand(array_flip(array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'))), $length)); break; } // 用 TrueType 字体向图像写入文本 for($i=0;$i<$length;$i++) { imagettftext($image, 16, mt_rand(-30, 30), $i*($width/$length), mt_rand($height-15, 25), randColor($image), '.\font\Microsoft-YaHei-Light.ttc', $str[$i]); } // 生成像素点 for ($i=1;$i<=100;$i++) { imagesetpixel($image, mt_rand(0, $width), mt_rand(0, $height), randColor($image)); } //输出图像 header('Content-type:image/png'); imagepng($image); imagedestroy($image); return $str; } generateVerify();
测试了半天,导入字体库的时候使用绝对路径就好了
PHP中的会话控制
17406 学习 · 57 问题
相似问题