aps.net 图形验证码(转)
参考文章:
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 图形验证码(转)的更多相关文章
- 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其实已经完成了一个框架了,并且正在准备在生产环境中 ...
- C#生成图形验证码
先看效果: 再上代码 public class CaptchaHelper { private static Random rand = new Random(); private static in ...
- php 图形验证码的3种方法
生成图形验证码需要使用php GD库来生成,如果你没开户GD库我们需要在php.ini文件找到extension=php_gd2.dll 去掉前面的;就行了,然后重启apache 或iis环境即可 检 ...
- PHP5 GD库生成图形验证码(汉字)
PHP5 GD库生成图形验证码且带有汉字的实例分享. 1,利用GD库函数生成图片,并在图片上写指定字符imagecreatetruecolor 新建一个真彩色图像imagecolorallocate ...
- ASP.NET中如何生成图形验证码
通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置.该字符串可以包含数字.字母等. (2)将随机生成的字符串创建成图片,并显示. (3 ...
- PHP5生成图形验证码(有汉字)
利用PHP5中GD库生成图形验证码 类似于下面这样 1.利用GD库函数生成图片,并在图片上写指定字符 imagecreatetruecolor 新建一个真彩色图像 imagecolora ...
- [ASP.NET] 图形验证码破解-以简单图形为例
原文 http://www.dotblogs.com.tw/joysdw12/archive/2013/06/08/captcha-cracked.aspx 前言 这次来讲个比较有趣的主题,就是该如何 ...
- Net Core 生成图形验证码
1. NetCore ZKweb 在我第一次绘制图形验证码时是采用的ZKweb的绘制库,奉上代码参考 public byte[] GetVerifyCode(out string ...
- Tornado框架实现图形验证码功能
图形验证码是项目开发过程中经常遇到的一个功能,在很多语言中都有对应的不同形式的图形验证码功能的封装,python 中同样也有类似的封装操作,通过绘制生成一个指定的图形数据,让前端HTML页面通过链接获 ...
随机推荐
- 黑马程序员——JAVA基础之正则表达式,网络爬虫
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式: 概念:用于操作字符串的符合一定规则的表达式 特点:用于一些特定的符号来表示一些代码 ...
- 建造者模式(Builder)
建造者模式(Builder)将复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 建造者模式通常包括下面几个角色: 1. builder:给出一个抽象接口,以规范产品对象的各个组成成分的 ...
- [转]SQLServer2008日志文件无法收缩处理方法
问题描述 发现有的数据库日志文件太大,无论如何收缩执行几次SQL语句都不行.事务日志达30+G,而且使用常规的截断.收缩方法均无法减小日志物理文件的尺寸,经过一番寻找,终于找到了解决方法. 查 ...
- Java 异步处理简单实践
Java 异步处理简单实践 http://www.cnblogs.com/fangfan/p/4047932.html 同步与异步 通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理,而异 ...
- Openstack Neutron DVR workflow
目前在Juno版本的trunk中已经合入了DVR相关的代码,我的理解是在Juno版本中DVR是一个experimental feature.最好需要稳定一个版本以后再上生产环境.之前写过一篇博文是DV ...
- Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)
OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目 ...
- 7个混合式HTML5移动开发框架
在这个时间开始学习移动开发真是最好不过了,每个人应该都有一些移动应用的创意,而且你并不需要任何的原生应用编程经验,你只需要一些HTML的相关知识,懂一些CSS和JavaScript就够了.如果你总听别 ...
- VC运行库合集2005/2008/2010/2012/2013/2015
VC运行库合集2005/2008/2010/2012/2013/2015,批处理一键安装(需管理员权限) 链接:http://pan.baidu.com/s/1bpLZoFt 密码:bnk8
- mysql 的 infobright 数据库的 mediumblob 显示不了数据
需要修改mysql的配置文件: /var/www/html/phpmyadmin/config.inc.php 增加: $cfg['ProtectBinary'] = FALSE; 即可
- CRM合并事件
1 Only account, contact, lead, incident entities are supported for merge 2 Merging Custom Entity Rec ...