图形验证码

新建一个.cs文件用来写生成图形验证码的方法,返回一个MemoryStream的参数。在Default.aspx中接收输出就可以了。

1.下面是.cs的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;

/// <summary>
///BitmapImage 的摘要说明
/// </summary>
public class BitmapImage
{

    public static MemoryStream ImageCheck()
    {
        Random random = new Random();
        //随机产生4位随机数
        string checkCode = random.Next(1000, 9999).ToString();
        //Bitmap是用来指定初始化时文本的大小
        Bitmap image = new Bitmap((int)Math.Ceiling((checkCode.Length * 20.5)), 22);
        Graphics g = Graphics.FromImage(image);
        try
        {

            g.Clear(Color.White);//清空图片背景色
            //画图片的背景噪音线这里是4条线
            for (int i = 0; i < 4; i++)
            {
                int x1 = random.Next(image.Width);
                int x2 = random.Next(image.Width);
                int y1 = random.Next(image.Height);
                int y2 = random.Next(image.Height);
                g.DrawLine(new Pen(Color.Black), x1, x2, y1, y2);
            }
            Font font = new Font("Arial", 12, FontStyle.Bold);
            //设置颜色,起始位置等参数
            LinearGradientBrush brush = new 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);
            MemoryStream ms = new MemoryStream();
            image.Save(ms, ImageFormat.Gif);
            return ms;
        }
        finally
        {
            g.Dispose();
            image.Dispose();
        }

    }
}

2.以下是Default.aspx.cs中的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        MemoryStream ms= BitmapImage.ImageCheck();
        Response.ClearContent();
        Response.ContentType = "image/Gif";
        Response.BinaryWrite(ms.ToArray());
    }
}

 3.截图

 

时间: 2024-12-15 08:53:50

图形验证码的相关文章

图形验证码如何解决集群中使用问题

刚才写了一篇文章关于图形验证码的,感觉没有考虑集群情况.其实集群无非加一个集群缓存 将session换成redis或者memcatch. 今天记录一下 使用 redis做集群图形验证码的相关方案. 基于文章: http://www.cnblogs.com/owenma/p/7375540.html 添加redis: 在获取和存储的地方使用的是redis封装好的cacheManager. @RequestMapping(value = "/getKaptchaImage", method

图形验证码实现方案(解决短信轰炸问题)

最近收到leader的一个邮件说我们的项目有短信轰炸风险.顿时让一个做技术开发的人为之一颤.今天给大家介绍一个解决这个问题的使用工具. 就是谷歌的 kaptcha 进行验证码生成和校验.闲话少说直接上代码. 1. 首先下载一个工具包 <dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactId> <version>0.0.9</ve

生成图形验证码

介绍生成两种类型的图形验证码: 1.普通的随机字符串;  2.随机运算表达式 图形验证码类: /// <summary> /// 图形验证码类 /// </summary> public class PicCaptcha { #region Constructed Methods /// <summary> /// 默认构造方法 /// </summary> public PicCaptcha() { } /// <summary> ///构造方

12306 图形验证码分析

验证码是一个非常有意思的问题,它的目的是区分输入者是人还是机器,这个问题本质上是一个图灵测试(推荐电影<模仿游戏>),验证码即是一种简单高效的验证方法,由CMU的教授于2000年左右创造,后来此牛人又将零星的验证码收集起来,转化为巨大的生产力,成功将上千万篇纸质文章数字化,目前Google还用其识别门牌号,路牌等(一个神人创造了验证码,又让验证码做出了巨大贡献).12306昨天改用了图形验证码,而事实上,图形验证码已经不是新鲜事了,早在几个月钱,Google就换成了图形验证(谷歌让验证码更简单

Servlet实现图形验证码

1. 开发环境 |-- tomcat7 |-- eclipse |-- jdk1.7 2. 项目结构 |-- demo |-- src |-- asia.hchx.filter |-- CharacterFilter |-- LoginFilter |-- asia.hchx.servlet |-- LoginServlet |-- VerifyImage |-- WebContent |-- index.jsp |-- login.jsp 3. 测试步骤 |-- 创建web项目 |-- 配置开

Python验证码识别--利用pytesser识别简单图形验证码

一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形.以及利用计算机进行图形的计算.处理和显示的相关原理与算法.图形通常由点.线.面.体等几何元素和灰度.色彩.线型.线宽等非几何属性组成.计算机涉及到的几何图形处理一般有 2维到n维图形处理,边界区分,面积计算,体积计算,扭曲变形校正.对于颜色则有色彩空间的计算与转换,图形上色,阴影,色差处理等等. 在破解验证码中需要用

python爬虫中图形验证码的处理

使用python爬虫自动登录时,遇到需要输入图形验证码的情况,一个比较简单的处理方法是使用打码平台识别验证码. 使用过两个打码平台,打码兔和若快,若快的价格更便宜,识别率相当.若快需要注册两个帐号:开发者帐号与用户帐号,用户帐号用于发送识别请求,开发者帐号可以注册软件id,并于识别请求进行绑定,可以参与识别收入的分成返现. 获取图形验证码目前发现的有两种方式: 0x01 在抓包中可以直接获得图片:发送get请求可以直接获取图片(png或jpg格式),这种情况可以使用request.get()返回

关于杭州绿城项目短信验证码前加图形验证码,我说用这种方式的都是蠢材

日前,某外包公司帮杭州绿城做了屋牛项目,改项目的短信平台遭到恶意大规模的请求,向运营商购买的短信很快耗尽.该团队想了方法即在短信验证码前加图形验证码. 分析一下,黑客模拟发起短信验证码的请求,他只能根据他获得得到的数据进行模拟,这里指一般的黑客攻击,且只针对此具体问题.对http熟悉的,都知道4个域,application.request.response.session.如果我们在session(或者HttpRuntime.Cache)里放一个token,每次请求比对该token,再辅以每个号

PHP 图形验证码

一段生成图形验证码的代码,向原创作者致谢. 1.将以下代码保存为 txm.php ,注:直接运行该页面是没有结果的,要用另一页面引用,请看步骤2 <?php session_start(); $img_width=80;$img_height=24;if($_GET["act"]== "init"){    for($Tmpa=0;$Tmpa<6;$Tmpa++)   {        $nmsg.=dechex(rand(0,15)); // 生成随机