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 ...
随机推荐
- Keyshot+AD渲染PCB效果图
Keyshot+AD渲染PCB效果图 1.前言 前些天,公司同事找到我说,公司的展会宣传册要更新的了,有几款新的产品需要更新添加上去,大部分的新产品都有实物demo,可以拍照修一下图弄上去.但不巧,其 ...
- unity学习路线_重新出发
入门级 1.先观看视频教程做一个小案例 官方英文:Unity - Learn – Modules 国内中文:Sike学院 基础级 1.你需要接触完整性的教程网站 Siki学院 Unity游戏开发从入门 ...
- Web挂马方式整理
一:框架挂马 <iframe src=地址 width=0 height=0></iframe> 二:js文件挂马 首先将以下代码 document.write("& ...
- Final阶段用户使用报告
此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2477] 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙 ...
- 【Alpha】第二次Scrum meeting
本次会议内容概括如下: 总结了今天各成员分配任务完成情况,对消耗时间进行统计 评估了各自对团队的贡献(影响)程度 初步讨论了日后需要逐步完成的一些任务并发布在github上 具体内容如下表所示: Me ...
- team330团队铁大兼职网站使用说明
项目名称:铁大兼职网站 项目形式:网站 网站链接:http://39.106.30.16:8080/zhaopinweb/mainpage.jsp 开发团队:team330 网站上线时间:2018年1 ...
- 这个不是第一次作业----艰难的安装Android studio历程
之前只听说过eclipse,后来从室友处得知,还有一个安卓的开发工具叫做Android studio,上网百度后发现网友普遍说Android studio比eclipse快,没想太多,删E装A. 在装 ...
- VS社区版 使用 OpenCover 获取测试代码覆盖率
注:暂不支持VS2017 Visual Studio 2015 社区版没有集成代码覆盖率的功能,所以想在VS社区版中获取单元测试的代码覆盖率等数据,需要使用到插件 OpenCover. 下载 Open ...
- sqlserver附加数据库时,无法打开物理文件 "xx.mdf"。操作系统错误 5:"5
sqlserver在附加数据库时,提示无法打开物理文件 "xx.mdf".操作系统错误 5:"5 此时可能你是用window验证方式登陆数据库的? 如果是这样,断开连接, ...
- 新版vue-cli如何使用json-server来mork
新版vue-cli如何使用json-server来mork 原创 2018年03月06日 11:28:32 标签: vue / 前端 / webpack / vue-cli 185 新版的vue-cl ...