.NET 二维码生成(ThoughtWorks.QRCode)

引用ThoughtWorks.QRCode.dll (源代码里有)

1、简单二维码生成及解码代码:

        //生成二维码方法一

        private void CreateCode_Simple(string nr)

        {

            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();

            qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;

            qrCodeEncoder.QRCodeScale = 4;

            qrCodeEncoder.QRCodeVersion = 8;

            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;

            //System.Drawing.Image image = qrCodeEncoder.Encode("4408810820 深圳-广州 小江");

            System.Drawing.Image image = qrCodeEncoder.Encode(nr);

            string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg";

            string filepath = Server.MapPath(@"~\Upload") + "\\" + filename;

            System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);

            image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);



            fs.Close();

            image.Dispose();

            //二维码解码

            var codeDecoder = CodeDecoder(filepath);

        }



        /// <summary>

        /// 二维码解码

        /// </summary>

        /// <param name="filePath">图片路径</param>

        /// <returns></returns>

        public string CodeDecoder(string filePath)

        {

            if (!System.IO.File.Exists(filePath))

                return null;

            Bitmap myBitmap = new Bitmap(Image.FromFile(filePath));

            QRCodeDecoder decoder = new QRCodeDecoder();

            string decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap));

            return decodedString;

        }

2、源代码演示,相对复杂的生成方式:

界面效果:

.NET 二维码生成(ThoughtWorks.QRCode)

前端代码:

@{

    Layout = null;

}



<!DOCTYPE html>



<html>

<head>

    <meta name="viewport" content="width=device-width" />

    <title>Code</title>

    <script src="~/Scripts/jquery-1.10.2.js"></script>

    <script type="text/javascript">

        $(function () {

            $("#createCode").click(function () {

                var strData = $("#strData").val();

                var level = $("#level").val();

                var encoding = $("#encoding").val();

                var version = $("#version").val();

                var scale = $("#scale").val();



                $.post("/home/CreateCode_Choose", { strData: strData, level: level, qrEncoding: encoding, version: version, scale: scale }, function (data) {

                    $("img").attr("src", data);

                });

            });



        });



    </script>

</head>

<body>

    <div>

        <p>要生成的文字(支持中文):<input id="strData" type="text" value="123456 测试" /></p>

        <p>

            Encoding:<select id="encoding">

                <option value="Byte">Byte</option>

                <option value="AlphaNumeric">AlphaNumeric</option>

                <option value="Numeric">Numeric</option>

            </select>



        </p>

        <p>

            Correction Level:<select id="level">

                <option value="M">M</option>

                <option value="L">L</option>

                <option value="Q">Q</option>

                <option value="H">H</option>

            </select>

        </p>

        <p>Version:<input id="version" type="text" value="8" /></p>

        <p>scale:<input id="scale" type="text" value="4" /></p>

        <img src="" alt="" />

        <input id="createCode" type="button" value="生成" />

    </div>

</body>

</html>

后台:

        /// 生成二维码

        /// </summary>

        /// <param name="strData">要生成的文字或者数字,支持中文。如: "4408810820 深圳-广州" 或者:4444444444</param>

        /// <param name="qrEncoding">三种尺寸:BYTE ,ALPHA_NUMERIC,NUMERIC</param>

        /// <param name="level">大小:L M Q H</param>

        /// <param name="version">版本:如 8</param>

        /// <param name="scale">比例:如 4</param>

        /// <returns></returns>

        public ActionResult CreateCode_Choose(string strData, string qrEncoding, string level, int version, int scale)

        {

            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();

            string encoding = qrEncoding;

            switch (encoding)

            {

                case "Byte":

                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;

                    break;

                case "AlphaNumeric":

                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;

                    break;

                case "Numeric":

                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;

                    break;

                default:

                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;

                    break;

            }



            qrCodeEncoder.QRCodeScale = scale;

            qrCodeEncoder.QRCodeVersion = version;

            switch (level)

            {

                case "L":

                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;

                    break;

                case "M":

                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;

                    break;

                case "Q":

                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;

                    break;

                default:

                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;

                    break;

            }

            //文字生成图片

            Image image = qrCodeEncoder.Encode(strData);

            string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg";

            string filepath = Server.MapPath(@"~\Upload") + "\\" + filename;

            //如果文件夹不存在,则创建

            //if (!Directory.Exists(filepath))

            //    Directory.CreateDirectory(filepath);

            System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);

            image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);

            fs.Close();

            image.Dispose();

            return Content(@"/Upload/" + filename);

        }

源代码演示下载:点击下载

 

你可能感兴趣的:(QRCode)