zoukankan      html  css  js  c++  java
  • APS.NET MVC4生成解析二维码简单Demo

    一、视图

    @{
        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="230px;height:120px;" id="content"></textarea>
                <br />
                <input id="createBtn" type="button" value="生成二维码" />
            </div>
            <div>
                <textarea style="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;
            }
        }
    }

    四、效果

  • 相关阅读:
    ubuntu下安装maven
    159.Longest Substring with At Most Two Distinct Characters
    156.Binary Tree Upside Down
    155.Min Stack
    154.Find Minimum in Rotated Sorted Array II
    153.Find Minimum in Rotated Sorted Array
    152.Maximum Product Subarray
    151.Reverse Words in a String
    150.Evaluate Reverse Polish Notation
    149.Max Points on a Line
  • 原文地址:https://www.cnblogs.com/ldyblogs/p/QRcode.html
Copyright © 2011-2022 走看看