简单验证码

public void ProcessRequest(HttpContext context)
        {
            //0.0得到字符串
            string vcode = GetVcode(4);
            //0.1将验证码保存到Session中
            //context.Session[Kit.vcode]=vcode;
            context.Session[Kit.vcode] = vcode;
            //1.0准备一个画板
            using (Image img=new Bitmap(60,20))
            {
                //2.0准备一个画家对象
                using (Graphics g=Graphics.FromImage(img))
                {
                    //将验证码的背景色变成白色
                    g.Clear(Color.White);
                    //画边框
                    g.DrawRectangle(Pens.Black, 0, 0, img.Width - 1, img.Height - 1);
                    //画一些干扰点
                    DrawPoint(g,img,50);
                    //将验证码画到图片上
                    g.DrawString(vcode,new Font("宋体",16,FontStyle.Bold),Brushes.Red,0,0);
                    DrawPoint(g, img, 50);
                }
                //将图片保存到输出流
                img.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
            }

        }
        /// <summary>
        /// 画干扰点
        /// </summary>
        /// <param name="g"></param>
        /// <param name="img"></param>
        /// <param name="p"></param>
        private void DrawPoint(Graphics g, Image img, int p)
        {
            //得到x,y坐标
            int x;
            int y;
            //得到点
            Point p1;
            Point p2;
            for (int i = 0; i < p; i++)
            {
                x = r.Next(0,img.Width);
                y = r.Next(0,img.Height);
                //根据xy生成点
                p1 = new Point(x,y);
                p2 = new Point(x+1,y+1);
                //连接两点
                g.DrawLine(Pens.Black,p1,p2);

            }
        }
         Random r = new Random();
        /// <summary>
        /// 得到字符串
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        private string GetVcode(int p)
        {
            string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,O,P,Q,R,S,T,U,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,s,t,u,w,x,y,z";
            //切割字符串
            string[] array = allChar.Split(new char[] { ‘,‘ }, StringSplitOptions.RemoveEmptyEntries);
            //创建验证码字符串
            string vcode = string.Empty;
            for (int i = 0; i < p; i++)
            {
                int index = r.Next(0,array.Length);
                vcode += array[index];
            }
            return vcode;
        }
时间: 2024-10-06 22:34:23

简单验证码的相关文章

php基础之gd图像生成、缩放、logo水印和简单验证码实现

php基础之gd图像生成.缩放.logo水印和简单验证码实现 阅读目录 图像生成 缩略图 水印生成 验证码 gd 库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩 展,windows系统下需要在php.ini中将extension=php_gd2.dll 前边的分号去掉然后重启web服务器,linux系统下一般在编译php时已经开启gd库扩展,要是没有开启gd库扩展则需要先编译安装freetype ,j

简单 验证码 功能

在贴代码之前首先简述一下验证验证码原理:随机获取验证码的值,把这个值存到session中,其作用可想而知就是要拿来跟前台数据作比较,通过Graphics将值进行模糊处理之后传到前台页面展示. 1 package com.skss.util; 2 3 4 import java.awt.Color; 5 import java.awt.Font; 6 import java.awt.Graphics; 7 import java.awt.image.BufferedImage; 8 import

C#简单验证码码识别

写在最前 最近做一个小玩意需要识别验证码,之前从来没接触过验证码识别这块,这可难到了我.所以,只有三番五次的麻烦度娘帮我找找验证码识别这块的资料.所幸,许多前辈分享的博文帮到了我.最终,完美的把问题解决. 我要识别的验证码属于非常简单的一种,如下图: 1.图片灰度化(把彩色的验证码图片转换成灰色图片) for(int i = 0; i < bmp.Width; i++) { for(int j = 0; j < bmp.Height; j++) { Color color = bmp.GetP

简单验证码的识别

验证码图片均取自于国内某知名信息安全网站,通过图像处理.模板对比识别等步骤,实现了该类简单验证码图片的识别功能.同时对程序实现了可视化界面,并集成了(验证码)图片下载.(灰度值)门限手动调节等扩展功能.代码存在github,传送门请戳我. 一.程序内容及原理 本程序以Python实现,主要借助了PIL(Python Image Library,实现读取图片.读取灰度值等图像处理相关功能)及tkinter(实现界面设计相关功能)两个库.图像处理及识别的主程序的总体流程如下:导入(读取)验证码图片,

php笔记之GD库图片创建/简单验证码

燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.ini中extension=php_gd2.dll  去掉前边的分号,然后重启apache,创建图片就可以用了 /* 画图的一般步骤: 1.创建画布 2.创建颜料 3.画图或者写字 4.保存 5.销毁资源 */ //创建画布 $img=imagecreatetruecolor(300,200); //创

C# 生成简单验证码

网站登录总是会用到验证码,生成验证码对于C#来说很简单.因为有专门封装好的GDI+类可以直接调用使用具体代码如下 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Drawing; 8 9 namespace Ajax

验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数字+小写.数字+大写.数字+大小写等情况. 四位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数字+小写.数字+大写.数字+大小写等情况. 简单验证码识别:验证码类型 : 数字+字母, 纯英文, 纯数字,计算题 英数_验证码识别:纯数字,纯英文,数字+英文 中英数_验证码识别:英文.数

用Java画简单验证码

以下是具体代码: package com.jinzhi.tes2; import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.I

java生成简单验证码图片

概要 最近项目需要用java实现输出随机验证码图片到前台,正好有机会接触下java的绘图类,完成需求后也有时间做个总结,写篇随笔记录下也希望能帮助到有同样需求的人! 需求流程图 1.生成随机数 在java中生成随机数无非就是调用Random的api,但为了后续更好的实用,应该分成多种组合以适应需求的变化,应将生成随机数的个数和类型组合还有排除字符抽取成参数,这个也比较简单,没有什么难度,就直接贴上代码 1 /** 2 * 生成随机验证码 3 * @param type 类型 4 * @param

简单验证码识别 tessnet2

今天突然间对识别验证码感兴趣,于是网上搜了一下 最简单的是引用tessnet2.dll,然后通过它来识别,代码如下 1 private void button1_Click(object sender, EventArgs e) 2 { 3 string strUrl = @"http://www.gz.gov.cn/sofpro/gecs/common/image.jsp?dt=Thu%20Nov%2024%202011%2017:20:21%20GMT+0800%20(China%20Sta