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;
            }
        }
    }

    四、效果

  • 相关阅读:
    ReactiveCocoa入门教程——第一部分【转载】
    浅谈iOS中MVVM的架构设计与团队协作【转载】
    如何使用CocoaPods安装使用及配置私有库以及管理依赖库 【原创】
    工作经验【原创】
    xcode常见报错调试【原创】
    彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题(转)
    Android遇到的那些坑
    Android开发和Android Studio使用教程
    CGI是什么 搜索了这么多,大致看明白了保留下来。
    不同手机根据坐标计算控件、图片的像素,px 与 dp, sp换算公式?
  • 原文地址:https://www.cnblogs.com/ldyblogs/p/QRcode.html
Copyright © 2011-2022 走看看