.NET 二维码生成(ThoughtWorks.QRCode)
2015-11-29 05:34
706 查看
.NET 二维码生成(ThoughtWorks.QRCode)
引用ThoughtWorks.QRCode.dll (源代码里有)
界面效果:
![](http://images0.cnblogs.com/blog2015/292326/201506/212209539825834.png)
前端代码:
后台:
源代码演示下载 http://download.csdn.net/detail/firedlove/9309127
引用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、源代码演示,相对复杂的生成方式:
界面效果:![](http://images0.cnblogs.com/blog2015/292326/201506/212209539825834.png)
前端代码:
@{ 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); }
源代码演示下载 http://download.csdn.net/detail/firedlove/9309127
相关文章推荐
- Android通过session与服务端保持一致
- 学习java随笔第三篇:java的基本数据类型姿浊装淄滓赘
- springMVC从上传的Excel文件中读取数据
- 题解:HDU 2717: Catch That Cow (BFS)
- SSH连接ubuntu中文显示乱码问题!
- 4.JDBC执行查,增,删,改
- SSH Ubuntu中vi不能正常使用方向键问题!
- 题解: HDU 1548 :A strange lift(BFS)
- java中连接数据库各种技术总汇
- 读《应试教育的死穴在于它没有给孩子留下犯错的空间》有感
- 3.通过DriverManager获取JDBC连接
- 2.通过原始的Driver接口通过读取Properties属性文件获取JDBC数据库连接Connection
- 题解:HUD 2102:A计划 (BFS)
- Mybatis的分页查询
- Facebook ATC 教程
- Android TextView
- 【C++学习与应用总结】1: 两种变长参数函数比较
- 利用Python开发的ATM小程序
- 封神演义
- MVC Ajax Helper或jQuery异步方式加载部分视图