生成验证码图片(含模糊背景)
首先可以传来一个strCode,这个可以用简单的脚本生成就可以了
function buildImgCode()
{
vImgCode=Math.random().toString(10).substring(2,6);
document.getElementById("imgCode").src="生成图片的页面.aspx?c="+vImgCode;
}
生成图片的页面:
this.buildCodeImg(this.Request["c"]);
private void buildCodeImg(string strCode)
{
if(strCode==null||strCode.Trim()==String.Empty||strCode=="")
return;
System.Drawing.Bitmap image=new System.Drawing.Bitmap((int)Math.Ceiling((strCode.Length*12.5)),22);
Graphics g=Graphics.FromImage(image);
try
{
//生成随机生成器
Random random=new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for(int i=0;i<25;i++)
{
int x1=random.Next(image.Width);
int x2=random.Next(image.Width);
int y1=random.Next(image.Height);
int y2=random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver),x1,y1,x2,y2);
}
Font font=new System.Drawing.Font("Arial",12,(System.Drawing.FontStyle.Bold|System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush=new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0,0,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2f,true);
g.DrawString(strCode,font,brush,2,2);
//画图片的前景噪音点
for(int i=0;i<100;i++)
{
int x=random.Next(image.Width);
int y=random.Next(image.Height);
image.SetPixel(x,y,Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver),0,0,image.Width-1,image.Height-1);
System.IO.MemoryStream ms=new System.IO.MemoryStream();
image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType="image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}