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页面通过链接获 ...
随机推荐
- Bean的定义及作用域的注解实现
1. Classpath扫描与组件管理 从Spring3.0开始,Spring JavaConfig项目提供了很多特性,包括使用java而不是XML定义bean. 比如@configuration, ...
- linux服务之maven
curl -O http://mirrors.noc.im/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip [root@d ...
- Ecs下的两台mysql做主从设置
一.主库配置master 1.用户root账户进入到mysql mysql -uroot -p 2.创建用于主从同步的账户,并赋予权限,由于这个账户只是作为同步数据用,所以分配权限不要过大,我这里只赋 ...
- Unity Shader——Writing Surface Shaders(1)——Surface Shader Examples
这里有Surface Shader的一些例子.下面的这些例子关注使用内建的光照模型:关于如何使用自定义光照模型的例子参见Surface Shader Lighting Examples. 简单 我们将 ...
- arcgis 10.1 错误(TCP_NODELAY NOT enabled)
Procedure The steps provided require that you briefly stop the license manager. During this time, co ...
- MVC:上传文件时限制文件类型
之前写过一篇:MVC:上传文件 今天补充下一个功能:如何限制上传文件类型 文件类型可以在前段限制,但是太容易被绕过,最好还是在后端处理. 修改upload方法代码: [HttpPost] public ...
- 黄聪:wordpress向一个页面POST数据,出现404页面访问不了
出现这个情况,说明POST的数据中存在一些关键词,触发调用了page以外的模版.比如POST数据中有 name , author 等参数. 解决办法,就是把这些参数改一下名称.
- WebService---Android中访问WebService接口的方法
最近公司有个项目需要从Android平台访问WebService接口,实现向发布的函数传递对象.在网上找了一些资料,发现使用ksoap2可以调用WebService传递对象. 需要引入ksoap ...
- Relatives
Description Given n, a positive integer, how many positive integers less than n are relatively prime ...
- Blackfin DSP(四):BF533 EBIU之SDRAM
BF533的SDRAM控制器最大支持128M bytes的SDRAM空间:总线宽度可以配置为4位.8位.16位.处理器与SDRAM的连线包括数据总线D[0:15].地址总线A[1:19].SDRAM刷 ...