|
Server : Microsoft-IIS/10.0 System : Windows NT EBS-6136 10.0 build 17763 (Windows Server 2016) i586 User : jxgj ( 0) PHP Version : 7.0.33 Disable Function : passthru,exec,system,shell_exec,proc_open,popen,pcntl_exec,socket_bind,stream_socket_server Directory : D:/tmp_aspnet/root/63ee1760/9e6b534b/ |
?#pragma checksum "D:\wwwroot\ladderin\wwwroot\Include\ImgCode2.ashx" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "C088A984954690B86168EF8035679F0868AFFF77"
#line 1 "D:\wwwroot\ladderin\wwwroot\Include\ImgCode2.ashx"
using System;
using System.Web;
using System.Web.SessionState;
using System.Collections;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
public class ImgCode2 : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest (HttpContext context)
{
//色彩列表,用于验证码、噪线、噪点
Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.DarkBlue };
//字体列表,用于验证码
string[] font = { "Times New Roman", "MS Mincho", "Book Antiqua", "Gungsuh", "PMingLiU", "Impact" };
//验证码的字符集,去掉了一些容易混合的字符
char[] character = {'1', '2', '3', '4', '5', '6','7', '8', '9'};
char[] character2 = { '1', '2', '3', '4', '5', '6', '7', '8', '9'};
char[] character3 = { '+', '-', 'X'};
Random rnd = new Random();
//天生验证码字符串
int num1 = Convert.ToInt32(character[rnd.Next(character.Length)].ToString());
int num2 = Convert.ToInt32(character2[rnd.Next(character2.Length)].ToString());
string yunsuan = character3[rnd.Next(character3.Length)].ToString();
int b = 0;
int s = 0;
if (num1 > num2)
{
b = num1;
s = num2;
}
else
{
b = num2;
s = num1;
}
int jieguo = 0;
switch (yunsuan)
{
case "+":
jieguo = b + s;
break;
case "-":
jieguo = b - s;
break;
case "X":
jieguo = b * s;
break;
}
string chkCode = b.ToString() + yunsuan + s.ToString() + "=?";
Bitmap bmp = new Bitmap(100, 30);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
////画噪线
//for (int i = 0; i < 2; i++)
//{
// Color clr = color[rnd.Next(color.Length)];
// g.DrawLine(new Pen(clr), rnd.Next(bmp.Width), rnd.Next(bmp.Height), rnd.Next(bmp.Width), rnd.Next(bmp.Height));
//}
//画验证码字符串
for (int i = 0; i < chkCode.Length; i++)
{
string fnt = font[rnd.Next(font.Length)];
Font ft = new Font(fnt, 16);
Color clr = color[rnd.Next(color.Length)];
g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 16 + 15, (float)6);
}
//画噪点
//for (int i = 0; i < 20; i++)
//{
// int x = rnd.Next(bmp.Width);
// int y = rnd.Next(bmp.Height);
// Color clr = color[rnd.Next(color.Length)];
// bmp.SetPixel(x, y, clr);
//}
//断根该页输出缓存,设置该页无缓存
context.Response.Buffer = true;
context.Response.ExpiresAbsolute = System.DateTime.Now.AddMilliseconds(0);
context.Response.Expires = 0;
context.Response.CacheControl = "no-cache";
context.Response.AppendHeader("Pragma", "No-Cache");
//将验证码图片写入内存流,并将其以"image/Png" 体式输出
MemoryStream ms = new MemoryStream();
try
{
bmp.Save(ms, ImageFormat.Png);
context.Response.ClearContent();
context.Response.ContentType = "image/Png";
context.Response.BinaryWrite(ms.ToArray());
context.Session["imgcode"] = jieguo.ToString();
}
finally
{
//显式开释资源
bmp.Dispose();
g.Dispose();
}
}
public bool IsReusable {
get {
return false;
}
}
}
#line default
#line hidden