MVC图片验证码
C#类库:
public class YZM
{
public string YZMcode = String.Empty; public byte[] load()
{ Bitmap bit = new Bitmap(, );//画布大小
Graphics g = Graphics.FromImage(bit);//创建绘制对象,告诉它往哪张图片上绘制
try { Random r = new Random();
Color color1 = Color.FromArgb(r.Next(, ), r.Next(, ), r.Next(, ));
g.FillRectangle(new SolidBrush(color1), , , , );//画布颜色随机
for (int i = ; i < ; i++)//随机画干扰线
{
Color color3 = Color.FromArgb(r.Next(, ), r.Next(, ), r.Next(, ));
Pen pp = new Pen(new SolidBrush(color3), r.Next(, ));
g.DrawLine(pp, r.Next(, ), r.Next(, ), r.Next(, ), r.Next(, ));
} string yan = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";//设置随机的验证码,从里面抽取
int wei = ;
for (int i = ; i < ; i++)//取四位验证码,颜色随机
{
string m = yan.Substring(r.Next(, yan.Length), );
YZMcode += m;
Color color2 = Color.FromArgb(r.Next(, ), r.Next(, ), r.Next(, ));
int w = r.Next(, );
Font f = new Font("黑体", w);
SolidBrush b = new SolidBrush(color2); g.DrawString(m, f, b, wei, r.Next(, ));
wei += w;
} for (int i = ; i < ; i++)
{
Color color3 = Color.FromArgb(r.Next(, ), r.Next(, ), r.Next(, ));
Pen pp = new Pen(new SolidBrush(color3), r.Next(, ));
int a = r.Next(, );
int b = r.Next(, );
g.DrawLine(pp, a, b, (a + ), (b + ));
} System.IO.MemoryStream ms = new System.IO.MemoryStream();
bit.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
}
finally {
g.Dispose();//释放绘图对象
bit.Dispose();//释放图像对象
} } }
action:
public FileContentResult yIndex()
{
YZM y = new YZM();
byte[] bytes = y.load();
Session["yzm"] = y.YZMcode;
return File(bytes, @"image/jpeg");
}
HTML:
<img alt="验证码图片" id="img" src="@Url.Action("yIndex","Home")" style="width: 100px; height: 38px; border: 1px solid #ddd; margin-bottom: -15px;" />
<a href="#" onclick="fun()" style="color: #1b66c7">换一张</a>
js:
<script>
var i = 0;
function fun()
{
$("#img")[0].src = $("#img")[0].src + "?" +i;
i++;
}
</script>
MVC图片验证码的更多相关文章
- ASP.NET MVC 模块与组件(二)——定制图片验证码
本着简洁直接,我们就直奔主题吧! 下面是一个生成数字和字母随机组合的验证码类源代码: using System; using System.Drawing; using System.Drawing ...
- MVC伪一个12306图片验证码
本文的来由主要是满足自己的好奇心,而不是证明什么东西,如果涉及到什么官方性的事情,麻烦通知我谢谢:本篇将要和大家分享的是一个看起来通12306图片验证码相似的效果,这篇应该是今年农历最后一篇分享文章了 ...
- MVC中登录页图片验证码总结
直接上代码了 using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Imagi ...
- 基于spring mvc的图片验证码实现
本文实现基于spring mvc的图片验证码,分后台代码和前端页面的展现以及验证码的验证. 首看后台实现代码: @RequestMapping({"authCode"}) publ ...
- MVC之图片验证码
MVC之图片验证码 controller中的action方法public ActionResult GetValidateCode() { ValidateCode vCode = new Valid ...
- 在mvc中实现图片验证码的刷新
首先,在项目模型(Model)层中建立一个生成图片验证码的类ValidationCodeHelper,代码如下: public class ValidationCodeHelper { //用户存取验 ...
- Asp.net mvc生成验证码
1.生成验证码类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- MVC中验证码
MVC中验证码的实现(经常用,记录备用) 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭 ...
- MVC中验证码的实现(经常用,记录备用)
一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭建 二 正文 Ok,我们的验证码开始,这篇文章 ...
随机推荐
- Nginx反向代理配置可跨域
由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...
- android 查看MD5、sha1值命令
cmd 进去keystore 文件所在目录 keytool -list -v -keystore xxx.keystore debug.keystore 默认目录:C:\Documents and S ...
- MSSQL—按照某一列分组后取前N条记录
以前在开发的时候遇到过一个需求,就是要按照某一列进行分组后取前几条数据,今天又有同事碰到了,帮解决了之后顺便写一篇博客记录一下. 首先先建一个基础数据表,代码如下: IF OBJECT_ID(N'Te ...
- [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!
转自:http://blog.csdn.net/android_tutor/article/details/5772285 大家好,今天给大家详解一下Android中Activity的生命周期,我在前 ...
- 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)
(原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...
- linux常用vi命令
1:vi +n filename :打开文件,并将光标置于第n行首 2:在底行模式下,输入:set nu显示行号3:将光标移动到248行,命令:248G,即在命令行模式下输入248shitf+g4:复 ...
- [翻译]Primer on Cognitive Computing(认知计算入门)
Source Kelly J., Primer on Cognitive Computing 20150216. 侵删,联系方式:zhoujiagen\@gmail.com. 按A candidate ...
- web安全之文件上传漏洞
成因: 当文件上传时,若服务端脚本语言未对上传的文件进行严格验证和过滤,若恶意用户上传恶意的 脚本文件时,就有可能控制整个网站甚至是服务器,这就是文件上传漏洞. 权限: 1. 后台权限:登陆了后台,可 ...
- C#的数组
一维数组: 定义数组 int[] 变量名=new int [n]; 例一:输入班级人数,再输入每个人的姓名. 例二:输入班级人数,输入每个人的分数,求平均分 冒泡排序: 二维数组: 定义二维数组 in ...
- Delphi常用关键字用法详解
本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, ...