using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
namespace Pcb.Common
{
///
/// 生成验证码的类
///
/// @2015.6.15
/// 参考: http://www.cnblogs.com/jianjialin/archive/2009/12/16/1625780.html
///
public class ValidateCode
{
public ValidateCode()
{
}
///
/// 验证码的最大长度
///
public int MaxLength
{
get { return 10; }
}
///
/// 验证码的最小长度
///
public int MinLength
{
get { return 1; }
}
///
/// 生成验证码
///
/// 指定验证码的长度
///
public string CreateValidateCode(int length)
{
var randMembers = new int[length];
var validateNums = new int[length];
var validateNumberStr = "";
//生成起始序列值
var seekSeek = unchecked((int) DateTime.Now.Ticks);
var seekRand = new Random(seekSeek);
var beginSeek = (int) seekRand.Next(0, Int32.MaxValue - length*10000);
var seeks = new int[length];
for (var i = 0; i < length; i++)
{
beginSeek += 10000;
seeks[i] = beginSeek;
}
//生成随机数字
for (var i = 0; i < length; i++)
{
var rand = new Random(seeks[i]);
var pownum = 1*(int) Math.Pow(10, length);
randMembers[i] = rand.Next(pownum, Int32.MaxValue);
}
//抽取随机数字
for (var i = 0; i < length; i++)
{
var numStr = randMembers[i].ToString();
var numLength = numStr.Length;
var rand = new Random();
var numPosition = rand.Next(0, numLength - 1);
validateNums[i] = int.Parse(numStr.Substring(numPosition, 1));
}
//生成验证码
for (var i = 0; i < length; i++)
{
validateNumberStr += validateNums[i].ToString();
}
return validateNumberStr;
}
///
/// 得到验证码图片的长度
///
/// 验证码的长度
///
public static int GetImageWidth(int validateNumLength)
{
return (int) (validateNumLength*12.0);
}
///
/// 得到验证码的高度
///
///
public static double GetImageHeight()
{
return 22.5;
}
}
}