寫在前面
經常在大街上聽到掃碼送什么什么,如果真閑着沒事,從頭掃到位,估計書包都裝滿了各種東西。各種掃各種送,太泛濫了。項目中從沒接觸過二維碼的東東,最近要使用,就扒了扒網絡,發現關於解析二維碼的類庫還是非常多的,這里就選擇一個做一個demo,玩玩。
一個例子
關於二維碼的組件還是非常多的,你可以使用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(); }
瀏覽

如何解析呢?
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; }
解析結果

微信掃描結果

總結
這里只是弄一個demo玩玩。二維碼的用處很多,比如掃描登錄,掃描付款,掃描下載app等。。。大街上各種掃碼,從這頭掃到那頭,能掃一堆東西。這也是掃貨吧。。。
