110 lines
3.8 KiB
C#
110 lines
3.8 KiB
C#
using System;
|
||
using System.Drawing;
|
||
using System.Drawing.Imaging;
|
||
|
||
namespace Hncore.Infrastructure.Common
|
||
{
|
||
public class ValidateCodeHelper
|
||
{
|
||
public static string MakeCode(int length = 4)
|
||
{
|
||
char[] allCharArray = new char[] { '2', '3', '4', '5', '6', '7', '8', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'W', 'X', 'Y', 'Z' };
|
||
string randomCode = "";
|
||
int temp = -1;
|
||
|
||
Random rand = new Random();
|
||
for (int i = 0; i < length; i++)
|
||
{
|
||
if (temp != -1)
|
||
{
|
||
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
|
||
}
|
||
int t = rand.Next(allCharArray.Length);
|
||
if (temp == t)
|
||
{
|
||
return MakeCode(length);
|
||
}
|
||
temp = t;
|
||
randomCode += allCharArray[t];
|
||
}
|
||
return randomCode;
|
||
}
|
||
public static string MakeNumCode(int length = 4)
|
||
{
|
||
char[] allCharArray = new char[] { '1','2', '3', '4', '5', '6', '7', '8','9'};
|
||
string randomCode = "";
|
||
int temp = -1;
|
||
|
||
Random rand = new Random();
|
||
for (int i = 0; i < length; i++)
|
||
{
|
||
if (temp != -1)
|
||
{
|
||
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
|
||
}
|
||
int t = rand.Next(allCharArray.Length);
|
||
if (temp == t)
|
||
{
|
||
return MakeNumCode(length);
|
||
}
|
||
temp = t;
|
||
randomCode += allCharArray[t];
|
||
}
|
||
return randomCode;
|
||
}
|
||
|
||
public static string MakeCharCode(int length = 4)
|
||
{
|
||
char[] allCharArray = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'W', 'X', 'Y', 'Z' };
|
||
string randomCode = "";
|
||
int temp = -1;
|
||
|
||
Random rand = new Random();
|
||
for (int i = 0; i < length; i++)
|
||
{
|
||
if (temp != -1)
|
||
{
|
||
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
|
||
}
|
||
int t = rand.Next(allCharArray.Length);
|
||
if (temp == t)
|
||
{
|
||
return MakeCharCode(length);
|
||
}
|
||
temp = t;
|
||
randomCode += allCharArray[t];
|
||
}
|
||
return randomCode;
|
||
}
|
||
|
||
public static byte[] GenerateCodeImg(string code)
|
||
{
|
||
int Gheight = (int)(code.Length * 15) + 10;
|
||
|
||
//gheight为图片宽度,根据字符长度自动更改图片宽度
|
||
using (var img = new Bitmap(Gheight, 22))
|
||
{
|
||
using (var g = Graphics.FromImage(img))
|
||
{
|
||
SolidBrush whiteBrush = new SolidBrush(Color.White);
|
||
g.FillRectangle(whiteBrush, 0, 0, Gheight, 22);
|
||
int i = 0;
|
||
foreach (char ch in code.ToCharArray())
|
||
{
|
||
g.DrawString(ch.ToString(),
|
||
new Font("Arial", 13, FontStyle.Italic),
|
||
new SolidBrush(Color.FromArgb(0, 0, 0)),
|
||
i * 15,
|
||
0);
|
||
i++;
|
||
}
|
||
|
||
//在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
|
||
System.IO.MemoryStream ms = new System.IO.MemoryStream();
|
||
img.Save(ms, ImageFormat.Jpeg);
|
||
return ms.ToArray();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |