//生成随机字符串
private String GetRandomString(Int32 count)
{
StringBuilder sb = new StringBuilder();
for (Int32 i = 0; i <= count - 1; i++)
{
sb.Append(GetRandomChar(i + (int)DateTime.Now.Ticks));
}
return sb.ToString();
}
//生成随机字符
private Char GetRandomChar(int Seed)
{
Int32 tmpInt = 0;
Random rndNum = new Random(Seed);
while (true)
{
tmpInt = rndNum.Next(48, 122);
//如果为数字
if (tmpInt >= 48 && tmpInt <= 57)
{
break;
}
//如果为大写字母
if (tmpInt >= 65 && tmpInt <= 90)
{
break;
}
//如果为小写字母
if (tmpInt >= 97 && tmpInt <= 122)
{
break;
}
}
return Convert.ToChar(tmpInt);
}
//根据字符串生成验证图片
private Image GetImageFromString(String str,Int32 imageWidth,Int32 imageHeight)
{
Bitmap rtnImage;
rtnImage = new Bitmap(imageWidth, imageHeight);
Graphics g = Graphics.FromImage(rtnImage);
Int32 strCount = str.Length;
Int32 charWidth = rtnImage.Width / strCount;
Int32 charHeight = rtnImage.Height;
Random rndNum = new Random();
//背景笔刷
System.Drawing.Drawing2D.LinearGradientBrush tmpBrush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, rtnImage.Width, rtnImage.Height), Color.FromArgb(rndNum.Next(0, 255), rndNum.Next(0, 255), rndNum.Next(0, 255), rndNum.Next(0, 255)), Color.FromArgb(rndNum.Next(0, 255), rndNum.Next(0, 255), rndNum.Next(0, 255), rndNum.Next(0, 255)), rndNum.Next(0, 360));
g.FillRectangle(tmpBrush, new Rectangle(0, 0, rtnImage.Width, rtnImage.Height));
for (int i = 0; i <= strCount - 1; i++)
{
//坐标转换(先平移,后旋转)
g.TranslateTransform(charWidth * i + rndNum.Next(0 - charWidth / 4, charWidth / 4), rndNum.Next(0, 10));
g.RotateTransform(rndNum.Next(-30,30));
Font tmpFont = new Font("Arial",rndNum.Next(charWidth / 2,charWidth), FontStyle.Regular, GraphicsUnit.Pixel);
g.DrawString(str.Substring(i, 1), tmpFont, tmpBrush, 0,0);
g.ResetTransform();
}
return rtnImage;
}
04
2012
04
C# 验证码图片生成
发布:郑德才博客 | 分类:学习之路 | 评论:0 | 浏览:
相关文章:
【C#、Asp.Net 工具类大全】VerCode验证码生成工具类 (2015-6-9 12:58:57)
Asp.Net 生成验证码图片 (2013-3-1 22:9:7)
ASP.NET 一个简单验证码的生成制作代码 (2012-6-6 0:9:11)
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。