php 复杂生成验证码图片
<?php
function image3($length = 4, $type = 'png', $width = 180, $height = 60, $fontface = 'fpnf.ttf', $verifyName = 'verify') {
$code = $this->rand_string($length, 4);
$width = ($length * 25) > $width ? $length * 25 : $width;
$authCode = new Zend_Session_Namespace('Auth_Code');
$authCode->imagecode = $randval;
$im = imagecreatetruecolor($width, $height);
$borderColor = imagecolorallocate($im, 100, 100, 100); //边框色
$bkcolor = imagecolorallocate($im, 250, 250, 250);
imagefill($im, 0, 0, $bkcolor);
@imagerectangle($im, 0, 0, $width - 1, $height - 1, $borderColor);
// 干扰
for ($i = 0; $i < 15; $i++) { //开源代码phprm.com
$fontcolor = imagecolorallocate($im, mt_rand(0, 255) , mt_rand(0, 255) , mt_rand(0, 255));
imagearc($im, mt_rand(-10, $width) , mt_rand(-10, $height) , mt_rand(30, 300) , mt_rand(20, 200) , 55, 44, $fontcolor);
}
for ($i = 0; $i < 255; $i++) {
$fontcolor = imagecolorallocate($im, mt_rand(0, 255) , mt_rand(0, 255) , mt_rand(0, 255));
imagesetpixel($im, mt_rand(0, $width) , mt_rand(0, $height) , $fontcolor);
}
if (!is_file($fontface)) {
$fontface = dirname(__FILE__) . "/" . $fontface;
}
for ($i = 0; $i < $length; $i++) {
$fontcolor = imagecolorallocate($im, mt_rand(0, 120) , mt_rand(0, 120) , mt_rand(0, 120)); //这样保证随机出来的颜色较深。
$codex = substr($code, $i, 1);
imagettftext($im, mt_rand(16, 20) , mt_rand(-60, 60) , 40 * $i + 20, mt_rand(30, 35) , $fontcolor, $fontface, $codex);
}
$this->output($im, $type);
}
function output($im, $type = 'png') {
header("Content-type: image/" . $type);
$ImageFun = 'Image' . $type;
$ImageFun($im);
imagedestroy($im);
}本文地址:http://www.phprm.com/tuxiang/fs4494.html
转载随意,但请附上文章地址:-)