码迷,mamicode.com
首页 > Web开发 > 详细

APS.NET MVC4生成解析二维码简单Demo

时间:2015-11-05 18:34:43      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

一、视图

@{
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <script type="text/javascript">
        $(function () {
            //生成
            $(#createBtn).click(function () {
                createImage();
            });
            //解析
            $(#analysisBtn).click(function () {
                analysisImage();
            });
        });

        //生成二维码
        function createImage() {
            var content = $(#content).val();
            //ajax开始
            $.post("/ORCode/GetORImage/",
                { "content": content },
                function (data) {
                    $(#imgDiv).empty();
                    $(#imgDiv).append(<img id="ORImage" />);
                    $("#ORImage").attr("src", data);
                });
            //ajax结束
        }

        //解析二维码
        function analysisImage() {
            //获取图片名称
            var imageUrl = $(#ORImage).attr("src");
            var array = imageUrl.split(/);
            var imageName = array[array.length - 1]; //如:123.jpg

            //ajax开始
            $.post("/ORCode/GetORImageContent/",
                { "imageName": imageName },
                function (data) {
                    $(#ORCodeContent).empty();
                    $(#ORCodeContent).text(data);
                });
            //ajax结束
        }
    </script>
</head>
<body>
    <div style="text-align:center;">
        <div>
            <textarea style="width:230px;height:120px;" id="content"></textarea>
            <br />
            <input id="createBtn" type="button" value="生成二维码" />
        </div>
        <div>
            <textarea style="width:230px;height:120px;" id="ORCodeContent"></textarea>
            <br />
            <input id="analysisBtn" type="button" value="解析二维码" />
        </div>
        <div style="margin-top:20px;" id="imgDiv">
        </div>
    </div>
</body>
</html>

 

二、控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Common;
using System.Drawing;

namespace QRCodeDemo.Controllers
{
    public class ORCodeController : Controller
    {
        //
        // GET: /ORCode/
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult GetORImage(string content)
        {
            //if (string.IsNullOrEmpty(content))
            //{
            //    return Content("");
            //}

            string timeStr = DateTime.Now.ToFileTime().ToString();
            Bitmap bitmap = QRCodeOp.QRCodeEncoderUtil(content);
            string fileName = Server.MapPath("~") + "Content\\Images\\QRImages\\" + timeStr + ".jpg";
            bitmap.Save(fileName);//保存位图
            string imageUrl = "/Content/Images/QRImages/" + timeStr + ".jpg";//显示图片  
            return Content(imageUrl);
        }

        [HttpPost]
        public ActionResult GetORImageContent(string imageName)
        {
            string fileUrl = Server.MapPath("~") + "Content\\Images\\QRImages\\" + imageName;
            Bitmap bitMap = new Bitmap(fileUrl);
            string content = QRCodeOp.QRCodeDecoderUtil(bitMap);
            return Content(content);
        }
} }

 

三、二维码生成工具类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
using System.Drawing;


namespace Common
{
    public class QRCodeOp
    {
        /// <summary> 
        /// 生成二维码 
        /// </summary> 
        /// <param name="qrCodeContent">要编码的内容</param> 
        /// <returns>返回二维码位图</returns> 
        public static Bitmap QRCodeEncoderUtil(string qrCodeContent)
        {
            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
            qrCodeEncoder.QRCodeVersion = 0;
            Bitmap img = qrCodeEncoder.Encode(qrCodeContent, Encoding.UTF8);//指定utf-8编码, 支持中文 
            return img;
        }

        /// <summary> 
        /// 解析二维码 
        /// </summary> 
        /// <param name="bitmap">要解析的二维码位图</param> 
        /// <returns>解析后的字符串</returns> 
        public static string QRCodeDecoderUtil(Bitmap bitmap)
        {
            QRCodeDecoder decoder = new QRCodeDecoder();
            string decodedString = decoder.decode(new QRCodeBitmapImage(bitmap), Encoding.UTF8);//指定utf-8编码, 支持中文 
            return decodedString;
        }
    }
}

 

四、效果

技术分享

 

五、源码下载

APS.NET MVC4生成二维码简单Demo源码下载

 

APS.NET MVC4生成解析二维码简单Demo

标签:

原文地址:http://www.cnblogs.com/zxx193/p/4939988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!