/// <summary> /// 显示验证码图片 /// </summary> public void RenderGraphicImage(int number, VerifyWordOptions opt, bool simpleMode, out string words, string contentType) { HttpContext context = HttpContext.Current; byte[] data = GraphicDrawImage(number, opt, simpleMode, out words); context.Response.BinaryWrite(data); context.Response.ContentType = contentType ?? "Image/Jpeg"; }
/// <summary> /// 显示验证码图片 /// </summary> public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, Font font, int imageHeight, out string words) { HttpContext context = HttpContext.Current; int[] verifyWords = new int[number]; Random rd = new Random(); TestCondition test; int _tempInt; switch (opt) { //纯数字 case VerifyWordOptions.Number: test = (i, array) => { if (i == 0) { return(false); } else if (i < _n_s || i > _n_e) { return(false); } else if (!AllowRepeat && Array.Exists(array, a => a == i)) { return(false); } return(true); }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = wordArray[rd.Next(wordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; //纯字母 case VerifyWordOptions.Letter: test = (i, array) => { if (i == 0) { return(false); } else if (i < _ul_s || i > _ll_e || (i > _ul_e && i < _ll_s)) { return(false); } else if (!AllowRepeat && Array.Exists(array, a => a == i)) { return(false); } return(true); }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = wordArray[rd.Next(wordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; //字母和数字 case VerifyWordOptions.LetterAndNumber: test = (i, array) => { if (i == 0) { return(false); } else if (!Array.Exists(wordArray, a => a == i)) { return(false); } else if (!AllowRepeat && Array.Exists(array, a => a == i)) { return(false); } return(true); }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = wordArray[rd.Next(wordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; } //转换成字母 StringBuilder sb = new StringBuilder(); foreach (int i in verifyWords) { sb.Append((char)i); } //context.Session["current_verifycode"] = sb.ToString(); words = sb.ToString(); //绘图 return(DrawingImage(verifyWords, simpleMode, font, imageHeight)); }
/// <summary> /// 显示验证码图片 /// </summary> public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, out string words) { return(GraphicDrawImage(number, opt, simpleMode, GetDefaultFont(), 22, out words)); }
public char[] GenerateVerifyWords(int number, VerifyWordOptions opt) { int[] verifyWords = new int[number]; Random rd = new Random(); TestCondition test; int _tempInt; switch (opt) { //纯数字 case VerifyWordOptions.Number: test = (i, array) => { if (i == 0) { return(false); } else if (i < Ns || i > Ne) { return(false); } else if (!AllowRepeat && Array.Exists(array, a => a == i)) { return(false); } return(true); }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = WordArray[rd.Next(WordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; //纯字母 case VerifyWordOptions.Letter: test = (i, array) => { if (i == 0) { return(false); } else if (i < UlS || i > LlE || (i > UlE && i < LlS)) { return(false); } else if (!AllowRepeat && Array.Exists(array, a => a == i)) { return(false); } return(true); }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = WordArray[rd.Next(WordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; //字母和数字 case VerifyWordOptions.LetterAndNumber: test = (i, array) => { if (i == 0) { return(false); } else if (!Array.Exists(WordArray, a => a == i)) { return(false); } else if (!AllowRepeat && Array.Exists(array, a => a == i)) { return(false); } return(true); }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = WordArray[rd.Next(WordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; } //转换成字母 char[] charArray = new char[verifyWords.Length]; for (int i = 0; i < verifyWords.Length; i++) { charArray[i] = (char)verifyWords[i]; } //context.Session["current_verifycode"] = sb.ToString(); return(charArray); }
/// <summary> /// 显示验证码图片 /// </summary> public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, Font font, int imageHeight, out string words) { HttpContext context = HttpContext.Current; int[] verifyWords = new int[number]; Random rd = new Random(); TestCondition test; int _tempInt; switch (opt) { //纯数字 case VerifyWordOptions.Number: test = (i, array) => { if (i == 0) return false; else if (i < _n_s || i > _n_e) return false; else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; return true; }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = wordArray[rd.Next(wordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; //纯字母 case VerifyWordOptions.Letter: test = (i, array) => { if (i == 0) return false; else if (i < _ul_s || i > _ll_e || (i > _ul_e && i < _ll_s)) return false; else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; return true; }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = wordArray[rd.Next(wordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; //字母和数字 case VerifyWordOptions.LetterAndNumber: test = (i, array) => { if (i == 0) return false; else if (!Array.Exists(wordArray, a => a == i)) return false; else if (!AllowRepeat && Array.Exists(array, a => a == i)) return false; return true; }; for (int i = 0; i < number; i++) { while (verifyWords[i] == 0) { _tempInt = wordArray[rd.Next(wordLength)]; if (test(_tempInt, verifyWords)) { verifyWords[i] = _tempInt; } } } break; } //转换成字母 StringBuilder sb = new StringBuilder(); foreach (int i in verifyWords) { sb.Append((char) i); } //context.Session["current_verifycode"] = sb.ToString(); words = sb.ToString(); //绘图 return DrawingImage(verifyWords, simpleMode, font, imageHeight); }
/// <summary> /// 显示验证码图片 /// </summary> public byte[] GraphicDrawImage(int number, VerifyWordOptions opt, bool simpleMode, out string words) { return GraphicDrawImage(number, opt, simpleMode, GetDefaultFont(), 22, out words); }