zoukankan      html  css  js  c++  java
  • C# 一般处理程序生成验证码

    using System;
    using System.Collections;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml.Linq;
    using System.Drawing;
    using System.Web.SessionState;
    
    namespace MT
    {
        /// <summary>
        /// $codebehindclassname$ 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        public class verCode : IHttpHandler, IRequiresSessionState
        {
            private Random RandomSeed = new Random();
    
            public void ProcessRequest(HttpContext context)
            {
               
                // 生成随机数 iIlLoO0
                string strWord = "23456789QWERTYUPASDFGHKXCVBNM";
    
                string NumStr = null;
                for (int i = 0; i < 5; i++)
                {
                    NumStr += strWord[RandomSeed.Next(0, strWord.Length)];
                }
    
                //将验证码保存到session中
                context.Session["vcode"] = NumStr.ToLower();
    
                CreateImages(context, NumStr);
            }
    
    
            #region 生成验证码图片
            private void CreateImages(HttpContext context,string checkCode)
            {
                int iwidth = (int)(checkCode.Length * 13);
                System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 22);
                Graphics g = Graphics.FromImage(image);
                g.Clear(Color.White);
                //定义颜色
                Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
                //定义字体
                string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
                Random rand = new Random();
                //随机输出噪点
                for (int i = 0; i < 50; i++)
                {
                    int x = rand.Next(image.Width);
                    int y = rand.Next(image.Height);
                    g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1);
                }
                //输出不同字体和颜色的验证码字符
                for (int i = 0; i < checkCode.Length; i++)
                {
                    int cindex = rand.Next(7);
                    int findex = rand.Next(5);
    
                    Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold);
                    Brush b = new System.Drawing.SolidBrush(c[cindex]);
                    int ii = 4;
                    if ((i + 1) % 2 == 0)
                    {
                        ii = 2;
                    }
                    g.DrawString(checkCode.Substring(i, 1), f, b, 2 + (i * 12), ii);
                }
                //画一个边框
                g.DrawRectangle(new Pen(ColorTranslator.FromHtml("#CCCCCC"), 0), 0, 0, image.Width - 1, image.Height - 1);
    
                //输出到浏览器
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                context.Response.ClearContent();
                //Response.ClearContent();
                context.Response.ContentType = "image/gif";
                context.Response.BinaryWrite(ms.ToArray());
                g.Dispose();
                image.Dispose();
    
            }
            #endregion
    
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
  • 相关阅读:
    WEB
    Java
    数据库
    node笔记(持续更新)
    mysql数据库关于表的操作
    flutter 文本 更多 收起
    flutter 处理时间字符串
    flutter 轮播图动态加载网络图片
    写flutter项目之一脚一个坑,持续踩坑中
    flutter json数据解析
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/4040926.html
Copyright © 2011-2022 走看看