ASP.NET簡易検証コード
2273 ワード
protected void Page_Load(object sender, EventArgs e) { CreateCheckCodeImage(RndNum()); } private string RndNum() { int number; char code; string checkCode = String.Empty;
System.Random random = new Random();
for (int i = 0; i < 4; i++) { number = random.Next(); if (number % 2 == 0) code = (char)('0' + (char)(number % 10)); else code = (char)('A' + (char)(number % 26)); checkCode += code.ToString(); } Response.Cookies.Add(new HttpCookie("yzmcode", checkCode)); return checkCode; } private void CreateCheckCodeImage(string checkCode){if(checkCode==null|checkCode.Trim()==String.Empty)return;System.Drawing.Bitmap image=new System.Drawing.Bitmap((int)Math.Cheling((checkCode.Length*12.5),22);Graphics=Graphics.FroomImage(image);try{//生成ランダムジェネレータRandom dom=nenerandom dom=nenerandom=nerandom dom=nenewm=newm==nenewm==nephics=graphics.w Random();//クリア画像背景色g.Clear(Color.White);//画像の背景ノイズ線for(int i=0;i<25;i++){int x 1=random.Next(image.Width);int x 2=random.Next(image.Width);int y 1=random.Next(image.Height);int y 2=random.Next(image.Height);g.DrawLine(new Pen(Color.Silver),x 1,y 1,x 2,y 2);
Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2);//画像の前景を描くノイズポイントfor(int i=0;i<100;i++){int x=random.Next(image.Width);int y=random.Next(image.Height);image.SetPixel(x,y,Color.FromArgb(random.Next()}//画像の枠線g.DrawRectangle(new Pen(Color.Silver),0,0,image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } }
参照ページコードは次のとおりです.
System.Random random = new Random();
for (int i = 0; i < 4; i++) { number = random.Next(); if (number % 2 == 0) code = (char)('0' + (char)(number % 10)); else code = (char)('A' + (char)(number % 26)); checkCode += code.ToString(); } Response.Cookies.Add(new HttpCookie("yzmcode", checkCode)); return checkCode; } private void CreateCheckCodeImage(string checkCode){if(checkCode==null|checkCode.Trim()==String.Empty)return;System.Drawing.Bitmap image=new System.Drawing.Bitmap((int)Math.Cheling((checkCode.Length*12.5),22);Graphics=Graphics.FroomImage(image);try{//生成ランダムジェネレータRandom dom=nenerandom dom=nenerandom=nerandom dom=nenewm=newm==nenewm==nephics=graphics.w Random();//クリア画像背景色g.Clear(Color.White);//画像の背景ノイズ線for(int i=0;i<25;i++){int x 1=random.Next(image.Width);int x 2=random.Next(image.Width);int y 1=random.Next(image.Height);int y 2=random.Next(image.Height);g.DrawLine(new Pen(Color.Silver),x 1,y 1,x 2,y 2);
Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2);//画像の前景を描くノイズポイントfor(int i=0;i<100;i++){int x=random.Next(image.Width);int y=random.Next(image.Height);image.SetPixel(x,y,Color.FromArgb(random.Next()}//画像の枠線g.DrawRectangle(new Pen(Color.Silver),0,0,image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } }
参照ページコードは次のとおりです.
<img id="imgCode" width="83" height="38" src="ValiDateImage.aspx?<%=DateTime.Now %>" style="cursor: pointer;" alt=" " onclick="Show(this);">