using System; using System.Drawing; using System.IO; using System.Linq; using System.Text; namespace BLL { public class Captcha { public static byte[] GenerateCaptcha(out string captchaText) { Random random = new Random(); //StringBuilder sb = new StringBuilder(); // 生成4位随机数字作为验证码 //for (int i = 0; i < 4; i++) //{ // sb.Append(random.Next(0, 9)); //} //captchaText = sb.ToString(); const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; captchaText = new string(Enumerable.Repeat(chars, 4) .Select(s => s[random.Next(s.Length)]).ToArray()); using (Bitmap bitmap = new Bitmap(100, 30)) { using (Graphics g = Graphics.FromImage(bitmap)) { g.Clear(Color.White); // 绘制边框 g.DrawRectangle(new Pen(Color.Black), 0, 0, bitmap.Width - 1, bitmap.Height - 1); // 绘制验证码 Font font = new Font("Arial", 15, FontStyle.Bold); g.DrawString(captchaText, font, Brushes.Black, 5, 5); // 添加噪声线 for (int i = 0; i < 10; i++) { Point start = new Point(random.Next(bitmap.Width), random.Next(bitmap.Height)); Point end = new Point(random.Next(bitmap.Width), random.Next(bitmap.Height)); g.DrawLine(new Pen(Color.Black), start, end); } // 保存图片到内存流 using (MemoryStream memoryStream = new MemoryStream()) { bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png); return memoryStream.ToArray(); } } } } } }