Asp.net 生成验证码
public class CreateCodeImageUtil
{
public void CreateImage()
{
//声明code字体大小
int fontsize = ; //获取code的值
string code = GetCode(); //声明一个图片实例
Bitmap image = new Bitmap(code.Length * fontsize, ); //声明画图类的实例
Graphics g = Graphics.FromImage(image);
g.Clear(Color.FromArgb(, , )); //任取四点,画四条贝塞尔样条作为背景噪音线
Random random = new Random();
Color color = Color.FromArgb(, , );
Brush brush = new SolidBrush(color);
Pen pen = new Pen(brush, );
for (int i = ; i < ; i++)
{
Point p1 = new Point(random.Next(image.Width), random.Next(image.Height));
Point p2 = new Point(random.Next(image.Width), random.Next(image.Height));
Point p3 = new Point(random.Next(image.Width), random.Next(image.Height));
Point p4 = new Point(random.Next(image.Width), random.Next(image.Height)); g.DrawBezier(pen, p1, p2, p3, p4);
//g.DrawLine(pen, p3, p4);
} //绘制code
int angle = random.Next(, );
Font font = new Font("Arial", fontsize, (FontStyle.Bold | FontStyle.Italic));
//线性渐变
LinearGradientBrush textbrush = new LinearGradientBrush
(new Rectangle(, , image.Width - , image.Height - ),
Color.DimGray,
Color.Purple,
angle);
g.DrawString(code, font, textbrush, , ); //设置前景噪点
for (int i = ; i < ; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(, , ));
} //将图片返回到输出流
MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "image/Gif";
HttpContext.Current.Response.BinaryWrite(ms.ToArray()); //释放绘图资源
g.Dispose();
image.Dispose();
} public string GetCode()
{
try
{
Random random = new Random(); string code = "";
int num = random.Next(, );
for (int i = ; i < num; i++)
{
char chr = (char)('' + (char)(random.Next() % ));
code += chr;
}
for (int i = ; i < - num; i++)
{
char chr = (char)('A' + (char)(random.Next() % ));
code += chr;
} return code;
}
catch
{
return "";
}
}
}
Asp.net 生成验证码的更多相关文章
- 012. asp.net生成验证码图片(汉字示例/字母+数字)
protected void Page_Load(object sender, EventArgs e) { //生成验证码图片的基本步骤 string checkCode = "新年快乐& ...
- 【转载】ASP.NET 生成验证码
直接上code using System; using System.Collections.Generic; using System.Linq; using System.Web; using S ...
- ASP.NET——生成验证码
实现:随机生成四位数字的验证码,点击验证码可无刷新生成新的验证码,最后点击按钮进行检验 PS:本实例使用UpdatePanel实现无刷新. 前台代码: <asp:ScriptManager ID ...
- ASP.NET生成验证码
首先,添加一个一般处理程序 注释很详细了,有不懂的欢迎评论 using System; using System.Collections.Generic; using System.Drawing; ...
- ASP.NET图形验证码的生成
效果: 调用方法: int[] r = QAPI.VerifImage.RandomList();//取得随机数种子列 );//产生验证码字符 pictureBox1.Image = QAPI.Ver ...
- ASP.NET ashx实现无刷新页面生成验证码
现在大部分网站登陆时都会要求输入验证码,在网上也看了一些范例,现在总结一下如何实现无刷新页面生成验证码. 效果图: 实现方式: 前台: <div> <span>Identify ...
- 详细说说如何生成验证码—ASP.NET细枝末节(4)
前言 今天小编详细的说一下,ASP.NET网站开发过程中生成验证码的全部问题. 本文的目标,是让读者了解,生成验证码涉及的全部基础知识问题. 当然这里说的是比较简单的验证码. 真正符合要求的验证码,涉 ...
- (一)【转】asp.net mvc生成验证码
网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中. ...
- Asp.net mvc生成验证码
1.生成验证码类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
随机推荐
- fs/ext2/inode.c相关函数注释
用数组chain[4]描述四种不同的索引,即直接索引.一级间接索引.二级间接索引.三级间接索引.举例说明这个结构各个域的含义.如果文件内的块号为8,则不需要间接索引,所以只用chain[0]一个Ind ...
- Golang学习 - unicode/utf8 包
------------------------------------------------------------ // 编码所需的基本数字 const ( RuneError = '\uFFF ...
- alljoyn连接时-fno-rtti选项测试结果
以AllJoyn自带的chat示例在pc上测试结果如下: libAllJoyn.a编译选项 Chat编译选项 测试结果 -Wall -Werror=non-virtual-dtor -pipe -st ...
- Android(java)学习笔记63:线程的优先级
1. Java线程的优先级从1到10级别,值越大优先级越高线程默认优先级是5.值越大优先级越高 (1) 继承自Thread类创建线程类: package cn.itcast_04; public cl ...
- js兼容性问题
javscript 浏览器兼容性问题: scrollTop = document.documentElement.scrollTop || document.body.scrollTop; scrol ...
- Redis缓存异常的容错实现方法( .net)
using DotNet.Log; /// <summary> /// Redis缓存辅助类 /// /// 修改纪录 /// /// 2015-10-26 版本:1.0 SongBiao ...
- 【python,threading】python多线程
使用多线程的方式 1. 函数式:使用threading模块threading.Thread(e.g target name parameters) import time,threading def ...
- MySQL关于InnoDB的几个错误
阿里云服务器上装有MySQL 5.6,这几天MySQL服务经常死掉,启动MySQL服务(service mysql start),却报如下错误 Starting MySQL.. ERROR! The ...
- Linux下C/C++程序开发管理(makefile)
一.引言 从我们刚开始编写一个简单的C/C++ "Hello,World!",到将其编译.运行处结果—这部分工作IDE(集成开发环境)帮我们做了,包括语法错误检查 ...
- hdu 4669 模拟
思路: 主要就是模拟这些操作,用链表果断超时.改用堆栈模拟就过了 #include<map> #include<set> #include<stack> #incl ...