本文实例为大家分享了C#生成验证码图片的具体代码,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
/// <summary>
/// 生成验证码图片
/// </summary>
/// <returns></returns>
public byte [] GetVerifyCode()
{
int codeW = 80;
int codeH = 40;
int fontSize = 18;
string chkCode = string .Empty;
//颜色列表,用于验证码、噪线、噪点
Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
//字体列表,用于验证码
string [] font = { "Times New Roman" };
//验证码的字符集,去掉了一些容易混淆的字符
char [] character = { '2' , '3' , '4' , '5' , '6' , '8' , '9' , 'a' , 'b' , 'd' , 'e' , 'f' , 'h' , 'k' , 'm' , 'n' , 'r' , 'x' , 'y' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'J' , 'K' , 'L' , 'M' , 'N' , 'P' , 'R' , 'S' , 'T' , 'W' , 'X' , 'Y' };
Random rnd = new Random();
//生成验证码字符串
for ( int i = 0; i < 4; i++)
{
chkCode += character[rnd.Next(character.Length)];
}
//创建画布
Bitmap bmp = new Bitmap(codeW, codeH);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
//画噪线
for ( int i = 0; i < 1; i++)
{
int x1 = rnd.Next(codeW);
int y1 = rnd.Next(codeH);
int x2 = rnd.Next(codeW);
int y2 = rnd.Next(codeH);
Color clr = color[rnd.Next(color.Length)];
g.DrawLine( new Pen(clr), x1, y1, x2, y2);
}
//画验证码字符串
for ( int i = 0; i < chkCode.Length; i++)
{
string fnt = font[rnd.Next(font.Length)];
Font ft = new Font(fnt, fontSize);
Color clr = color[rnd.Next(color.Length)];
g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), ( float )i * 18, ( float )0);
}
//将验证码图片写入内存流,并将其以 "image/Png" 格式输出
MemoryStream ms = new MemoryStream();
try
{
bmp.Save(ms, ImageFormat.Png);
return ms.ToArray();
}
catch (Exception)
{
return null ;
}
finally
{
g.Dispose();
bmp.Dispose();
}
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/yuanzijian-ruiec/archive/2018/10/01/9734417.html