验证码类
namespace QJW.VerifyCode
{
//用法:
//public FileContentResult CreateValidate()
//{
// ValidateCode vCode = new ValidateCode();
// string code = vCode.CreateValidateCode(5);
// Session["ValidateCode"] = code;
// byte[] bytes = vCode.CreateValidateGraphic(code);
// return File(bytes, "image/JPEG");
//}
public class ValidateCode
{
public ValidateCode()
{
}
/// <summary>
/// 验证码的最大长度
/// </summary>
public int MaxLength
{
get { return 10; }
}
/// <summary>
/// 验证码的最小长度
/// </summary>
public int MinLength
{
get { return 1; }
}
/// <summary>
/// 生成验证码
/// </summary>
/// <param name="length">指定验证码的长度</param>
/// <returns></returns>
public string CreateValidateCode(int length)
{
int[] randMembers = new int[length];
int[] validateNums = new int[length];
string validateNumberStr = "";
//生成起始序列值
int seekSeek = unchecked((int)DateTime.Now.Ticks);
Random seekRand = new Random(seekSeek);
int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
int[] seeks = new int[length];
for (int i = 0; i < length; i++)
{
beginSeek += 10000;
seeks[i] = beginSeek;
}
//生成随机数字
for (int i = 0; i < length; i++)
{
Random rand = new Random(seeks[i]);
int pownum = 1 * (int)Math.Pow(10, length);
randMembers[i] = rand.Next(pownum, Int32.MaxValue);
}
//抽取随机数字
for (int i = 0; i < length; i++)
{
string numStr = randMembers[i].ToString();
int numLength = numStr.Length;
Random rand = new Random();
int numPosition = rand.Next(0, numLength - 1);
validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
}
//生成验证码
for (int i = 0; i < length; i++)
{
validateNumberStr += validateNums[i].ToString();
}
return validateNumberStr;
}
/// <summary>
/// 创建验证码的图片
/// </summary>
/// <param name="containsPage">要输出到的page对象</param>
/// <param name="validateNum">验证码</param>
public byte[] CreateValidateGraphic(string validateCode)
{
Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的干扰线
for (int i = 0; i < 25; 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.Silver), x1, y1, x2, y2);
}
Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(validateCode, font, brush, 3, 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 stream = new MemoryStream();
image.Save(stream, ImageFormat.Jpeg);
//输出图片流
return stream.ToArray();
}
finally
{
g.Dispose();
image.Dispose();
}
}
/// <summary>
/// 得到验证码图片的长度
/// </summary>
/// <param name="validateNumLength">验证码的长度</param>
/// <returns></returns>
public static int GetImageWidth(int validateNumLength)
{
return (int)(validateNumLength * 12.0);
}
/// <summary>
/// 得到验证码的高度
/// </summary>
/// <returns></returns>
public static double GetImageHeight()
{
return 22.5;
}
}
}
使用方法
public FileContentResult CreateValidate()
{
ValidateCode vCode = new ValidateCode();
string code = vCode.CreateValidateCode(5);
Session["ValidateCode"] = code;
byte[] bytes = vCode.CreateValidateGraphic(code);
return File(bytes, "image/JPEG");
}
HTML
<a href="javascript:;" onclick="reloadcode();"><img id="safecode" src="/common/CreateValidate" alt="" /></a>
视图JS
function reloadcode() {
var verify = document.getElementById('safecode');
verify.setAttribute('src', '/common/CreateValidate?' + Math.random());
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# asp.net
# mvc
# 验证码
# MVC使用极验验证制作登录验证码学习笔记7
# ASP.NET MVC验证码功能实现代码
# mvc实现图片验证码功能
# 大家多多
# 清空
# 背景色
# seeks
# MaxValue
# Math
# Pow
# rand
# pownum
# beginSeek
# seekSeek
# unchecked
# validateNums
# validateNumberStr
# Random
# seekRand
# DateTime
# Ticks
# Bitmap
相关文章:
Android使用GridView实现日历的简单功能
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
如何访问已购建站主机并解决登录问题?
济南专业网站制作公司,济南信息工程学校怎么样?
高性价比服务器租赁——企业级配置与24小时运维服务
如何通过.red域名打造高辨识度品牌网站?
如何通过老薛主机一键快速建站?
Swift中循环语句中的转移语句 break 和 continue
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站主机选哪种环境更利于SEO优化?
详解jQuery中基本的动画方法
智能起名网站制作软件有哪些,制作logo的软件?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
如何在西部数码注册域名并快速搭建网站?
制作企业网站建设方案,怎样建设一个公司网站?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
如何在阿里云ECS服务器部署织梦CMS网站?
Python文件管理规范_工程实践说明【指导】
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何用狗爹虚拟主机快速搭建网站?
如何通过万网虚拟主机快速搭建网站?
常州自助建站费用包含哪些项目?
如何通过可视化优化提升建站效果?
如何制作算命网站,怎么注册算命网站?
如何用免费手机建站系统零基础打造专业网站?
非常酷的网站设计制作软件,酷培ai教育官方网站?
如何使用Golang table-driven基准测试_多组数据测量函数效率
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
网站设计制作公司地址,网站建设比较好的公司都有哪些?
如何在腾讯云免费申请建站?
简单实现Android文件上传
兔展官网 在线制作,怎样制作微信请帖?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
高防服务器租用指南:配置选择与快速部署攻略
建站之星伪静态规则如何正确配置?
定制建站流程解析:需求评估与SEO优化功能开发指南
专业公司网站制作公司,用什么语言做企业网站比较好?
建站之星×万网:智能建站系统+自助建站平台一键生成
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
如何在局域网内绑定自建网站域名?
*请认真填写需求信息,我们会在24小时内与您取得联系。