ASP.NET实现二维码(QRCode)的创建和读取
- 一、项目引用QRCode的DLL文件(ThoughtWorks.QRCode.dll)
二、ASPX页面(两个jquery的js文件请自行去官网下载):[html]<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><title>二维码工具测试</title><script type="text/javascript" src="../../Scripts/Jquery/jquery-1.6.2.js"></script><script type="text/javascript" src="../../Scripts/Jquery/jquery.form.js"></script><script type="text/javascript" src="js/test.js"></script><style type="text/css">.style1{width: 100%;}#txt_qr{width: 632px;}</style></head><body><div><table class="style1"><tr><td>输入文字:</td><td><input type="text" id="txt_qr" name="txt_qr" /></td></tr><tr><td>二维码图片</td><td><img id="qrimg" alt="二维码图片" /></td></tr><tr><td>生成选项</td><td>Encoding:<select id="Encoding"><option value="Byte">Byte</option><option value="AlphaNumeric">AlphaNumeric</option><option value="Numeric">Numeric</option></select>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>Version:<input id="txt_ver" type="text" value="7" />(1-40) Size:<input id="txt_size"type="text" value="4" /></td></tr><tr><td colspan="4"><input type="button" onclick="getQrImg();" value="生成二维码" /></td></tr><tr><td><form id="qrForm" action="Ashx/test.ashx" method="post" enctype="multipart/form-data"><input type="file" id="file_qr" name="file_qr" /><input type="submit" value="读取二维码" /></form></td><td colspan="1"><img id="img_qr" alt="要读取的图片" /><br /><input id="txt_readqr" type="text" /></td></tr></table></div></body></html>三、test.js文件[javascript]$(document).ready(function (){var options = {beforeSubmit: showRequest,success: showResponse,dataType: 'json',clearForm: true,error: function (request, message, ex){alert('错误:' + message);}};$('#qrForm').ajaxForm(options);});function showRequest(formData, jqForm, options){return true;}function showResponse(responseText, statusText, xhr, $form){if (responseText[0].count == 0){alert(responseText[0].list[0].error);return false;}$("#img_qr").attr("src", responseText[0].list[0].imgurl);$("#txt_readqr").val(responseText[0].list[0].qrtext);return false;}function getQrImg(){var txt_qr = escape($.trim($("#txt_qr").val()));var qrEncoding = $("#Encoding").val(); ;var Level = $("#Level").val(); ;var txt_ver = $("#txt_ver").val(); ;var txt_size = $("#txt_size").val(); ;$.ajax({type: "GET",data: "cmd=set&txt_qr=" + txt_qr + "&qrEncoding=" + qrEncoding + "&Level=" + Level + "&txt_ver=" + txt_ver + "&txt_size=" + txt_size,url: "Ashx/test.ashx",dataType: 'text',beforeSend: function (x){x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");},success: function (json){var dataObj = eval(json);$("#qrimg").attr("src", dataObj[0].list[0].imgurl);return false;},error: function (request, message, ex){alert("错误:" + message);}});}四、test.ashx,没有判断目录是否存在等问题,请自行建立或者更改代码。[csharp]using System;using System.Web;using System.Drawing;using System.Drawing.Imaging;using System.Text;using System.Text.RegularExpressions;using ThoughtWorks.QRCode.Codec;using ThoughtWorks.QRCode.Codec.Data;using ThoughtWorks.QRCode.Codec.Util;public class test : IHttpHandler{public void ProcessRequest(HttpContext context){context.Response.ContentType = "text/plain";string cmd = context.Request["cmd"] == null ? "get" : context.Request["cmd"].ToString();string filename = string.Empty;string filepath = string.Empty;switch (cmd){case "get":if (context.Request.Files.Count > 0){for (int j = 0; j < context.Request.Files.Count; j++){filename = Guid.NewGuid().ToString() + "_tmp.jpg";filepath = context.Server.MapPath(@"~\Utilty\QRCode\upload") + "\\" + filename;string qrdecode = string.Empty;HttpPostedFile uploadFile = context.Request.Files[j];uploadFile.SaveAs(filepath);QRCodeDecoder decoder = new QRCodeDecoder();Bitmap bm = new Bitmap(filepath);qrdecode = decoder.decode(new QRCodeBitmapImage(bm));bm.Dispose();context.Response.Write("[{\"count\":1,\"list\":[{\"imgurl\":\"upload/" + filename + "\",\"qrtext\":\"" + qrdecode + "\"}]}]");}}else{context.Response.Write("[{\"count\":0,\"list\":[{\"error\":\"没有上传文件\"}]}]");}break;case "set":string txt_qr =ConverToGB(context.Request["txt_qr"].ToString().Trim(), 16);string qrEncoding = context.Request["qrEncoding"].ToString();string Level = context.Request["Level"].ToString();string txt_ver = context.Request["txt_ver"].ToString();string txt_size = context.Request["txt_size"].ToString();QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();String encoding = qrEncoding;if (encoding == "Byte"){qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;}else if (encoding == "AlphaNumeric"){qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;}else if (encoding == "Numeric"){qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;}try{int scale = Convert.ToInt16(txt_size);qrCodeEncoder.QRCodeScale = scale;}catch (Exception ex){return;}try{int version = Convert.ToInt16(txt_ver);qrCodeEncoder.QRCodeVersion = version;}catch (Exception ex){return;}string errorCorrect = Level;if (errorCorrect == "L")qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;else if (errorCorrect == "M")qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;else if (errorCorrect == "Q")qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;else if (errorCorrect == "H")qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;Image image;String data = txt_qr;image = qrCodeEncoder.Encode(data);filename = Guid.NewGuid().ToString() + ".jpg";filepath = context.Server.MapPath(@"~\Utilty\QRCode\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();context.Response.Write("[{\"count\":1,\"list\":[{\"imgurl\":\"upload/" + filename + "\"}]}]");//context.Response.Write(@"upload\" + filename);break;}}/// <summary>/// 10进制或16进制转换为中文/// </summary>/// <param name="name">要转换的字符串</param>/// <param name="fromBase">进制(10或16)</param>/// <returns></returns>public string ConverToGB(string text, int fromBase){string value = text;MatchCollection mc;System.Text.StringBuilder sb = new System.Text.StringBuilder();switch (fromBase){case 10:MatchCollection mc1 = Regex.Matches(text, @"&#([\d]{5})", RegexOptions.Compiled | RegexOptions.IgnoreCase);foreach (Match _v in mc1){string w = _v.Value.Substring(2);w = Convert.ToString(int.Parse(w), 16);byte[] c = new byte[2];string ss = w.Substring(0, 2);int c1 = Convert.ToInt32(w.Substring(0, 2), 16);int c2 = Convert.ToInt32(w.Substring(2), 16);c[0] = (byte)c2;c[1] = (byte)c1;sb.Append(Encoding.Unicode.GetString(c));}value = sb.ToString();break;case 16:mc = Regex.Matches(text, @"\\u([\w]{2})([\w]{2})", RegexOptions.Compiled | RegexOptions.IgnoreCase);if (mc != null && mc.Count > 0){foreach (Match m2 in mc){string v = m2.Value;string w = v.Substring(2);byte[] c = new byte[2];int c1 = Convert.ToInt32(w.Substring(0, 2), 16);int c2 = Convert.ToInt32(w.Substring(2), 16);c[0] = (byte)c2;c[1] = (byte)c1;sb.Append(Encoding.Unicode.GetString(c));}value = sb.ToString();}break;}return value;}public bool IsReusable{get{return false;}}}
ASP.NET实现二维码(QRCode)的创建和读取的更多相关文章
- asp.net生成二维码的方法
asp.net生成二维码的方法 [复制链接] 这个要利用一个Dll文件. 如下 Gma.QrCodeNet.Encoding.dll (105.5 KB, 下载次数: 27) 当然大家也可以直 ...
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...
- Java实现二维码QRCode的编码和解码
涉及到的一些主要类库,方便大家下载: 编码lib:Qrcode_swetake.jar (官网介绍-- http://www.swetake.com/qr/index-e.html) 解码lib: ...
- js生成二维码 qrcode
js生成二维码 QRcode npm 地址 1.安装qrcode //在项目文件夹中执行: npm install --save qrcode //或者,将其全局安装以使用qrcode命令行来保存qr ...
- Java生成二维码QRCode.jar
所需jar包:QRCode.jar:http://download.csdn.net/detail/xuxu198899223/7717745 package ewm; import java.awt ...
- Delphi Mercadopago支付【支持支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款等功能】
作者QQ:(648437169) 点击下载➨Delphi Mercadopago支付 [Delphi Mercadopago支付]支持 支持支持获取账户信息和余额.创建商店,商店查询.创建二维码.二维 ...
- ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
最近做项目遇到生成二维码的问题,发现网上用的最多的是ThoughtWorks.QRCode和QrCode.Net两种方式.访问官网看着例子写了两个Demo,使用过程中发现两个都挺好用的,Thought ...
- ASP.NET生成二维码
下面使用ThoughtWorks.QRCode.dll这个类库,实现生成二维码 使用时需要增加:下面三个命名空间 using ThoughtWorks.QRCode.Codec; using Thou ...
- 二维码QRCode
package com.aig.ecompass.ecard; import java.awt.image.BufferedImage; import java.io.File; import jav ...
随机推荐
- PAT甲题题解-1121. Damn Single (25)-水题
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789787.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- BugPhobia开发篇章:Beta阶段第VI次Scrum Meeting
0x01 :Scrum Meeting基本摘要 Beta阶段第六次Scrum Meeting 敏捷开发起始时间 2015/12/18 00:00 A.M. 敏捷开发终止时间 2015/12/18 23 ...
- 20135337朱荟潼 Linux第二周学习总结——操作系统是如何工作的
一.计算机是如何工作的--总结 三个法宝 存储程序计算机.函数调用堆栈.中断机制 二.堆栈 1.是c语言程序运行时必须的一个记录调用路径和参数的空间. 函数调用框架.传递参数.保存返回地址.提供局部变 ...
- “数学口袋精灵”第二个Sprint计划---第一天
“数学口袋精灵”第二个Sprint计划----第一天进度 任务分配: 冯美欣:欢迎界面的音效 吴舒婷:游戏界面的动作条,选择答案后的音效 林欢雯:完善算法代码的设计 进度: 冯美欣:上网百度音乐资 ...
- Daily Scrum 10.20
今天进行了团队第一次scrum meeting,在这次会议中,我们针对NABC模型以及开发前期的工作进行了探讨. 第一次会议 主要内容如下: 为了大家接下来几周的开发效率,需要共同商量团队的一些规则 ...
- freopen stdout 真的更快?
freopen stdout 真的更快? 在一次数独作业中,我发现大部分同学提交的代码中都使用 freopen 来将 stdout 重新指向目标文件进行文件输出操作.我感到十分好奇,关于 freope ...
- numpy 读取txt为array 一行搞定
vec = np.genfromtxt('wiki.ch.text.vector', skip_header=1, delimiter=' ', dtype=None)skip_header=1是跳过 ...
- week4
History:Commercialization and Growth course Explosive Growth of the Internet and Web The Year of the ...
- Python爬虫实战:2017中国最好大学排名
抓取内容: 从最好大学网上抓取中国前10的大学排名.大学名称.总分,并数据格式左对齐. http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html 首先 ...
- Load balancing 各组件的比较
F5的Big-IP F5 lvs Nginx HAProxy ApacheProxy lighttpd Dubbo 专有硬件 是 Linux ALL IP 否 TCP 是 是 ...