随机生成验证码
usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Drawing.Drawing2D;usingSystem.Drawing.Imaging;usingSystem.IO;usingSystem.Linq;namespaceLetter.Data.Command
{publicclassValidateCode
{///<summary>///创建验证码的图片///</summary>///<param name="validateCode">验证码</param>publicbyte[] CreateValidateGraphic(stringvalidateCode)
{
Bitmap image=newBitmap((int)Math.Ceiling(validateCode.Length *12.0),22);
Graphics g=Graphics.FromImage(image);try{//生成随机生成器Random random =newRandom();//清空图片背景色g.Clear(Color.White);//画图片的干扰线for(inti =0; i <25; i++)
{intx1 =random.Next(image.Width);intx2 =random.Next(image.Width);inty1 =random.Next(image.Height);inty2 =random.Next(image.Height);
g.DrawLine(newPen(Color.Silver), x1, y1, x2, y2);
}
Font font=newFont("Arial",12, (FontStyle.Bold |FontStyle.Italic));
LinearGradientBrush brush=newLinearGradientBrush(newRectangle(0,0, image.Width, image.Height),
Color.Blue, Color.DarkRed,1.2f,true);
g.DrawString(validateCode, font, brush,3,2);//画图片的前景干扰点for(inti =0; i <100; i++)
{intx =random.Next(image.Width);inty =random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}//画图片的边框线g.DrawRectangle(newPen(Color.Silver),0,0, image.Width -1, image.Height -1);//保存图片数据MemoryStream stream =newMemoryStream();
image.Save(stream, ImageFormat.Jpeg);//输出图片流returnstream.ToArray();
}finally{
g.Dispose();
image.Dispose();
}
}///<summary>///生成数字随机码///</summary>///<param name="count">随机位数</param>///<returns></returns>publicstringCreateValidateCode(intcount)
{
Random r=newRandom();stringcode =string.Empty;for(inti =0; i < count; i++)
{
code+= r.Next(0,9)+"";
}returncode;
}
}
}
controller调用
///<summary>///获取验证码///</summary>///<returns></returns>publicActionResult GetValidateCode()
{
ValidateCode vCode=newValidateCode();stringcode = vCode.CreateValidateCode(4);session["ValidateCode"] =code;byte[] bytes =vCode.CreateValidateGraphic(code);returnFile(bytes,@"image/jpeg");
}