参考文章:

http://www.cnblogs.com/FayJack/articles/3063146.html

创建CreateCode.ashx文件:

<%@ WebHandler Language="C#" Class="CreateCode" %>

using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web.SessionState;
using System.Collections.Generic;
using System.Text;
using System.Drawing; public class CreateCode : IHttpHandler,IRequiresSessionState
{
//验证码 by Jack
public void ProcessRequest(HttpContext context)
{
System.Web.HttpResponse response = context.Response;
//验证码文字内容
string checkCode = CreateCheckCodeString();
context.Session.Add("createcodeStr", checkCode); int width = 80;//验证码图片宽度
int height = 22;//验证码图片高度
Font font = new Font("Arial", 12, FontStyle.Bold);//验证码字体
SolidBrush brush = new SolidBrush(Color.Black);//用于写验证码的画笔
Pen crosswise = new Pen(Color.Green, 0);//画横向干扰线的钢笔
Pen vertical = new Pen(Color.FromArgb(255, 100, 100, 100), 0);//画纵向干扰线的钢笔
Bitmap image = new Bitmap(width, height);//生成图像
Graphics g = Graphics.FromImage(image);//生成一个绘画面板(画布)
g.Clear(ColorTranslator.FromHtml("#f0f0f0"));//用指定颜色填充画布
RectangleF rect = new RectangleF(5, 2, width, height);//定义文字的绘制矩形
Random rand = new Random((int)DateTime.Now.Ticks);//生成干扰线的随机对象
for (int i = 0; i < 2; i++)
{
Point start = new Point(0, rand.Next(height));
Point end = new Point(width, rand.Next(height));
g.DrawLine(crosswise, start, end);
}
for (int i = 0; i < 4; i++)
{
Point start = new Point(rand.Next(width), 0);
Point end = new Point(rand.Next(width), height);
g.DrawLine(vertical, start, end);
}
g.DrawString(checkCode, font, brush, rect);//将验证码写到画布上
System.IO.MemoryStream ms = new System.IO.MemoryStream();
try
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
response.ClearContent();
response.ContentType = "image/Gif";
response.BinaryWrite(ms.ToArray());
}
finally
{
ms.Flush();
ms.Close();
ms.Dispose();
g.Dispose();
image.Dispose();
}
}
private string CreateCheckCodeString()
{ //定义用于验证码的字符数组
char[] AllCheckCodeArray ={ '1','2','3','4','5','6','7','8','9','A','B','C',
'D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W',
'X','Y','Z'};
//定义验证码字符串
string randomcode = "";
Random rd = new Random();
//生成4位验证码字符串
for (int i = 0; i < 5; i++)
randomcode += AllCheckCodeArray[rd.Next(AllCheckCodeArray.Length)];
return randomcode;
}
public bool IsReusable
{
get
{
return false;
}
} }

  

aps.net 图形验证码(转)的更多相关文章

  1. 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其实已经完成了一个框架了,并且正在准备在生产环境中 ...

  2. C#生成图形验证码

    先看效果: 再上代码 public class CaptchaHelper { private static Random rand = new Random(); private static in ...

  3. php 图形验证码的3种方法

    生成图形验证码需要使用php GD库来生成,如果你没开户GD库我们需要在php.ini文件找到extension=php_gd2.dll 去掉前面的;就行了,然后重启apache 或iis环境即可 检 ...

  4. PHP5 GD库生成图形验证码(汉字)

    PHP5 GD库生成图形验证码且带有汉字的实例分享. 1,利用GD库函数生成图片,并在图片上写指定字符imagecreatetruecolor 新建一个真彩色图像imagecolorallocate ...

  5. ASP.NET中如何生成图形验证码

    通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置.该字符串可以包含数字.字母等. (2)将随机生成的字符串创建成图片,并显示. (3 ...

  6. PHP5生成图形验证码(有汉字)

    利用PHP5中GD库生成图形验证码 类似于下面这样 1.利用GD库函数生成图片,并在图片上写指定字符 imagecreatetruecolor   新建一个真彩色图像      imagecolora ...

  7. [ASP.NET] 图形验证码破解-以简单图形为例

    原文 http://www.dotblogs.com.tw/joysdw12/archive/2013/06/08/captcha-cracked.aspx 前言 这次来讲个比较有趣的主题,就是该如何 ...

  8. Net Core 生成图形验证码

    1. NetCore ZKweb       在我第一次绘制图形验证码时是采用的ZKweb的绘制库,奉上代码参考      public byte[] GetVerifyCode(out string ...

  9. Tornado框架实现图形验证码功能

    图形验证码是项目开发过程中经常遇到的一个功能,在很多语言中都有对应的不同形式的图形验证码功能的封装,python 中同样也有类似的封装操作,通过绘制生成一个指定的图形数据,让前端HTML页面通过链接获 ...

随机推荐

  1. Python copy and deepcopy

    Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...

  2. 用vs2010编译和调试多个arx版本的arx项目

    翻译自dev guide<Compile and Debug Mixed-mode projects>    默认vs2010是使用ARX2014,开发AutoCAD2014使用的ARX, ...

  3. 【Oozie】安装配置Oozie

    安装和配置Oozie Oozie用于Hadoop的工作流配置: 参考链接: <Install and Configure Apache Oozie Workflow Scheduler for ...

  4. FC 坦克大战 老巢铁墙

    老巢外围铁墙E2A9:AC 80 EFEF80:A5 10 85 45 A5 45 AC D2 E2 用十六进制编辑器打开坦克大战的游戏文件搜索A5 45 F0 25 A5 0B改为AC 80 EF ...

  5. smarty3与2的差异导致的小问题

    又是一天看视频~ 今天在PHP100上学习smartY教程,视频中讲到了在模板文件中直接写带有“{}”JAVASCRIPT脚本会报错,我照视频上的代码写了下来,如下: <script> f ...

  6. AS3下如何来判断XML属性的是否存在

    在as3中判断xml节点是否存在可用XMLList中的方法:hasOwnProperty(p:String):Boolean. 但是判断xml节点是否存在某一属性,对象中好像没有该方法,只能用unde ...

  7. jquery.easypiechart.js简介

    此插件主要是用来统计新的访问.跳出率.服务器负载.使用的RAM等,功能很强大,带有HTML5的动画效果,效果非常炫,看效果吧easyPieChart一款新型的EASY饼图数据统计Jquery插件截图: ...

  8. 转载自@机智的新手:使用Auto Layout中的VFL(Visual format language)--代码实现自动布局

    本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...

  9. 使用DotNetOpenAuth搭建OAuth2.0授权框架——Demo代码简单说明

    前段时间随意抽离了一部分代码作为OAuth2的示例代码,若干处会造成困扰,现说明如下: public class OAuthController : Controller { private stat ...

  10. Inside The C++ Object Model - 03

    object Lessons 1.C++中布局以及存取时间上的的额外负担是由virtual引起的:virtual function.virtual base class.或是由于多继承引起的. 2.C ...