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 ...
随机推荐
- 手机访问PC端
输入所要访问的端口,然后默认下一步即可.
- mysql学习(2)-Navicat Premium 12 链接MySQL8.0.11数据库报2059错误
Navicat Premium 12 链接MySQL8.0.11数据库报2059错误 1,问题现象 安装完MySQL8.0.11和Navicat Premium12后,我们会用Navicat去测试连接 ...
- 11.5 Daily Scrum
请把现在当成11月5日······ Today's tasks Tomorrow's tasks 丁辛 餐厅列表数据结构设计 餐厅列表UI设计 李承晗 ...
- M1事后分析报告--We have power to change the origin state
M1事后分析报告 设计与实现 我们发的软件解决的问题?是否满足后面小组的要求?是否能够完全拟合前期目标? 答: 前期我们的软件完成量并不是特别让人满意,我们组在完成这些任务量之后,发现有很多地方是在做 ...
- Linux内核分析 一二章读书笔记
第一章 Linux内核简介 1.Unix (1)Unix系统很简洁 (2)在Unix中,所以东西都被当作文件对待,通过一套相同的系统调用接口来进行:open(),read(),write(),lsee ...
- KNY三人组对YiSmile小程序的项目总结
设想和目标 1.我们的小程序要解决什么问题? 针对于本校学生,服务于本校学生.由于丢东西,找东西的事情每天都在上演,空间说说,朋友圈,官方QQ,信息比较冗杂,没有一个固定的平台来专门提供学生.此外,教 ...
- mark1-git
Administrator@-20131003RY MINGW64 ~ $ pwd /c/Users/Administrator Administrator@-20131003RY MINGW64 ~ ...
- linux 远程连接报错 10038或者10061 或者10060
1.检查linux的mysql是否开启 2.检查mysql的user表的host是否是% 3.检查my.cnf文件是否绑定本地 4.防火墙3306端口是否开启 假如以上都没问题,那最大的原因就是我折腾 ...
- JavaBeans与内省(Introspector)
JavaBean与Introspector 反射和内省操作很多时候都是在以后要做框架的时候作用非常大. 现在你学的是面向对象编程,即:你所写代码都能够找到对应的类或接口,找到具体的方法写出对应的 ...
- sublime text3 增加emmett插件
本内容基于Windows环境)一.已安装有Sublime Text3 二.安装Package Control 安装这个后,可以在线安装所需的插件 方法1.Ctrl+~打开控制台,在控制台输 ...