[C#]二維碼(QR Code)生成與解析

寫在前面

常常在大街上聽到掃碼送什麼什麼,若是真閒着沒事,從頭掃到位,估計書包都裝滿了各類東西。各類掃各類送,太氾濫了。項目中從沒接觸過二維碼的東東,最近要使用,就扒了扒網絡,發現關於解析二維碼的類庫仍是很是多的,這裏就選擇一個作一個demo,玩玩。json

一個例子

關於二維碼的組件仍是很是多的,你能夠使用nuget選擇一款使用就能夠了。微信

生成二維碼網絡

        // GET: Home
        public ActionResult Index()
        {
            QRCodeEncoder endocder = new QRCodeEncoder();
            //二維碼背景顏色
            endocder.QRCodeBackgroundColor = System.Drawing.Color.White;
            //二維碼編碼方式
            endocder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
            //每一個小方格的寬度
            endocder.QRCodeScale = 10;
            //二維碼版本號
            endocder.QRCodeVersion = 5;
            //糾錯等級
            endocder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
            var person = new { Id = 1, Name = "wolfy", Gender = 1, Age = 24 };
            //將json川作成二維碼
            Bitmap bitmap = endocder.Encode(new JavaScriptSerializer().Serialize(person), System.Text.Encoding.UTF8);
            string strSaveDir = Request.MapPath("/QRcode/");
            if (!Directory.Exists(strSaveDir))
            {
                Directory.CreateDirectory(strSaveDir);
            }
            string strSavePath = Path.Combine(strSaveDir, person.Name + ".png");
            if (!System.IO.File.Exists(strSavePath))
            {
                bitmap.Save(strSavePath);
            }
            ViewBag.img = "/QRcode/" + person.Name + ".png";
            return View();
        }

瀏覽app

如何解析呢?編碼

        public string DeCoder()
        {
            string result = "";
            string strSaveDir = Request.MapPath("/QRcode/");
            if (!Directory.Exists(strSaveDir))
            {
                Directory.CreateDirectory(strSaveDir);
            }
            string strSavePath = Path.Combine(strSaveDir, "wolfy.png");
            if (System.IO.File.Exists(strSavePath))
            {
                QRCodeDecoder decoder = new QRCodeDecoder();
                result = decoder.decode(new ThoughtWorks.QRCode.Codec.Data.QRCodeBitmapImage(new Bitmap(Image.FromFile(strSavePath))));
            }

            return result;
        }

解析結果spa

微信掃描結果code

總結

這裏只是弄一個demo玩玩。二維碼的用處不少,好比掃描登陸,掃描付款,掃描下載app等。。。大街上各類掃碼,從這頭掃到那頭,能掃一堆東西。這也是掃貨吧。。。blog

相關文章
相關標籤/搜索