mvc4验证码&输出图像的处理方式

        /// <summary>
        /// 绘制验证码
        /// </summary>
        /// <returns></returns>
        public ActionResult VerificationCode()
        {

            int _verificationLength = 6;
            int _width = 100, _height = 20;
            SizeF _verificationTextSize;
            Bitmap _bitmap = new Bitmap(Server.MapPath("~/Skins/Common/Texture.jpg"), true);
            MemoryStream ms = new MemoryStream();
            TextureBrush _brush = new TextureBrush(_bitmap);
            //获取验证码
            string _verificationText = CMS.Common.Text.VerificationText(_verificationLength);
            //存储验证码
            Session["VerificationCode"] = _verificationText.ToUpper();
            Font _font = new Font("Arial", 14, FontStyle.Bold);
            Bitmap _image = new Bitmap(_width, _height);
            Graphics _g = Graphics.FromImage(_image);
            //清空背景色
            _g.Clear(Color.White);
            //绘制验证码
            _verificationTextSize = _g.MeasureString(_verificationText, _font);
            _g.DrawString(_verificationText, _font, _brush, (_width - _verificationTextSize.Width) / 2, (_height - _verificationTextSize.Height) / 2);

            _image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

            return File(ms.ToArray(), "image/jpeg");  

        }
 /// <summary>
        /// 获取验证码【字符串】
        /// </summary>
        /// <param name="Length">验证码长度【必须大于0】</param>
        /// <returns></returns>
        public static string VerificationText(int Length)
        {
            char[] _verification = new Char[Length];
            Random _random = new Random();
            char[] _dictionary = { ‘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‘, ‘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‘, ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘ };
            for (int i = 0; i < Length; i++)
            {
                _verification[i] = _dictionary[_random.Next(_dictionary.Length - 1)];
            }
            return new string(_verification);
        }
时间: 2024-08-08 05:19:05

mvc4验证码&输出图像的处理方式的相关文章

MVC4 Action 两种异步方式

1. xxxAsync/xxxCompleted 组合方式异步,xxxCompleted  就是他的回调函数,在执行完 xxxAsync 后调用xxxCompleted  . 使用 异步方式必须继承AsyncController 控制器: Async 异步方式通过 Controller的属性 AsyncManager 进行赋值 回调,看下面代码: public class AppController : AsyncController { public void ArticleAsync(str

【Spring学习笔记-MVC-4】返回Json数据-方式2

摘要 本文讲解另外一种利用spring MVC返回json数据的方法. 前文回顾 在<[Spring学习笔记-MVC-3]返回Json数据-方式1>中介绍了通过: @ResponseBody声明返回值: 配置<mvc:annotation-driven />: 来返回json数据.效果如下:   ==>, 从上面的效果看,只能返回一个对象,不能返回多个对象,不能做到形如下图的返回结果, 存在局限性(可能可以返回多个,自己不知道如何实现). 下面介绍的方式2,利用spring

IOS 仿某某获取验证码方式,xib+自动布局实现

GetCodeViewController 仿某某获取验证码,并验证方式.提供很多自定义接口,高度自定义.也可以自己更改源代码,界面用xib文件,加自动布局实现,直观易懂. 运行项目,请先cd到该目录后,pod update一下,即可运行,因为用到了POP动画库. 用法 将 项目中 popCodeViewController 整个文件夹拖到你的项目里面. 导入依赖库POP动画库 自定义控制器中,导入GetCodeViewController.PresentingAnimator.Dismissi

卷积神经网络(CNN)学习算法之----基于LeNet网络的中文验证码识别

由于公司需要进行了中文验证码的图片识别开发,最近一段时间刚忙完上线,好不容易闲下来就继上篇<基于Windows10 x64+visual Studio2013+Python2.7.12环境下的Caffe配置学习 >文章,记录下利用caffe进行中文验证码图片识别的开发过程.由于这里主要介绍开发和实现过程,CNN理论性的东西这里作为介绍的重点,遇到相关的概念和术语请自行研究.目前从我们训练出来的模型来看,单字识别率接近96%,所以一个四字验证码的准确率大概80%,效果还不错,完全能满足使用,如果

atitit.短信&#160;验证码&#160;&#160;破解&#160;&#160;v3&#160;p34&#160;&#160;识别&#160;绕过&#160;系统方案规划----业务相关方案&#160;手机验证码&#160;&#160;.doc

atitit.短信 验证码  破解  v3 p34  识别 绕过 系统方案规划----业务相关方案 手机验证码  .doc 1. 手机短信验证码 vs 图片验证码 安全性(破解成本)确实要高一些1 1.1. 破解基本原则有两种,一种是绕过验证码.一种是拦截1 2. 手机 短信 验证码的 破解 拦截 方式分类2 2.1. 按照源头破解拦截分为源头拦截,中间拦截,,终端拦截...2 2.2. 按照是否软硬件可分类为 纯软件方案与软硬件结合方案2 3. 具体的方法如下2 3.1. 后台服务器漏洞绕过法

SpringMVC+Apache Shiro+JPA(hibernate)案例教学(三)给Shiro登录验证加上验证码

序: 给Shiro加入验证码,有多种方式,当然你也可以通过继承修改FormAuthenticationFilter类,通过Shiro去验证验证码.具体实现请百度: 应用Shiro到Web Application(验证码实现) 而今天我要说的,既然使用的SpringMVC,为什么不直接在Controller中就处理验证码验证,让事情变的更简单一点呢? 一.新建ValidateCode.java验证码工具类 package org.shiro.demo.util; import java.util.

短信验证码接收平台

一.验证码是什么     所谓的验证码又称校验码.附加码,常祖政和卢晓倩在<计算机安全与维护>期刊中共同就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素,由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能. 二.短信验证证码接收平台干什么用的     短信验证证码接收平台可以在注册网站账号的时候,如果需要短信验证码的,此时就可以使用短信验证码接收平台的服务. 三.短信验证码接收平台的特点     如今的互联网隐私被人们看的越来越重要,但是大多

网站如何嵌入验证码

最近博客园的改版动作比较大,看到后台管理页面的验证码,提起了我的兴趣.点击显示的验证码,可以进入到一个专门做验证码的网站:http://captcha.com/ 其中包含有java.php..net等,几乎是全平台支持的,还有配套的教程和demo. 文末提供下载下来的java版的文件,里面有jar包,如何使用呢?想快速入手: 一:最简单的文字验证码.使用jsp方式. 在jsp页面引用: <%@page import="botdetect.web.Captcha"%> 然后在

远程答题的使用方式是怎样的

打码平台的发展,相信有一部分人早就知道有打码这个平台,起初都是需要通过人的肉眼查看后再手动输入对应的放号完成验证码的识别.首先小编将介绍下打码验证码输入的相关方式. 下面专门通过人工输入验证码来打码的经历,在周末,每个人的生活方式都是不同的,有些会选择和好友一起下饭馆改善伙食,有些独自一人去往异地放松心情,还有一部分通过兼职工作来打发时间,周末的生活里剩下的也仅仅只有打码两个字. 打码对虽然是份很简单的工作,也很轻松.主要是看打字速度,相对于其他工作来说,打码还是很适合安静人的从事,虽然没有办法