MVC中生成图形验证码并显示(极简)
Posted lfq761204
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC中生成图形验证码并显示(极简)相关的知识,希望对你有一定的参考价值。
本文仅仅是生成图形验证码并在视图显示的最精简代码,功能也最简单。如果想实现验证码图片添加噪点噪线、旋转字符、验证输入验证码是否正确等功能,请参考:
一、控制器代码
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Web.Mvc;
namespace XLZXXX.Controllers {
public class LoginController : Controller
{
public ActionResult Index(){
return View();
}
public FileResult GetVerificationCode() {
//定义验证码字符库,0和1容易与字母o和i混淆,不用
char[] codesNumber = { '2','3','4','5','6','7','8','9' };
//定义验证码字符数组,长度为4
char[] codes = new char[4];
//定义一个随机数生成器
Random rnd = new Random();
//生成4个随机数字作为验证码
for(int i = 0;i<codes.Length;i++)
codes[i]=codesNumber[rnd.Next(codesNumber.Length)];
//定义bitmap对象,并以此生成graphics绘图对象
Bitmap bmp = new Bitmap(120,48);
Graphics g = Graphics.FromImage(bmp);
//填充白色背景
g.Clear(Color.White);
//依次将4个数字写入图片
for(int i = 0;i<codes.Length;i++) {
//字体大小设置成24,最后的两个参数是计算画各数字的位置
g.DrawString(codes[i].ToString(),new Font("黑体",24,FontStyle.Bold),new SolidBrush(Color.Black),12+24*i,12);
}
g.Dispose();
//将验证码数字写入内存流,转换成字节数组,并将生成的文件内容对象返回提供给视图中img控件显示
MemoryStream ms = new MemoryStream();
bmp.Save(ms,ImageFormat.Jpeg);
return new FileContentResult(ms.ToArray(),"image/jpeg");
}
}
}
二、视图代码
Index的视图
@{Layout = null;}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>MVC中生成图形验证码(极简)</title>
<script src="~/Scripts/jquery.min.js"></script>
<script>
$(function() {
$("#img").click(function() {
//src属性值后加参数是为了避免浏览器的缓存机制
$(this).prop("src","/Login/GetVerificationCode?t="+new Date().getTime());
});
$("#img").click();
});
</script>
</head>
<body>
<div> <img src="" id="img" />
</div>
</body>
</html>
以上是关于MVC中生成图形验证码并显示(极简)的主要内容,如果未能解决你的问题,请参考以下文章