一、项目引用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" οnclick="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)的创建和读取相关推荐

  1. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  2. Java实现二维码QRCode的编码和解码

    涉及到的一些主要类库 编码lib:Qrcode_swetake.jar         (官网介绍-- http://www.swetake.com/qr/index-e.html)          ...

  3. 前端生成二维码qrcode.js,并下载

    利用qrcode.js在前端生成二维码,并下载 一.引入js包 <script type="text/javascript" src="//static.runoo ...

  4. 二维码Qrcode Library

    二维码Qrcode Library 插件官网:https://qrcode-library.readthedocs.io/en/latest/#yii2 composer 安装 php compose ...

  5. JAVA生成二维码QRcode

    JAVA生成二维码QRcode 1 : 配置集成 1.1.配置maven 1.2.配置文件 1.3.logo文件 2 : 代码集成 2.1.加载配置文件 2.2.工具类 2.3.测试类 3 : 测试结 ...

  6. 二维码制作、识别、读取其存储内容

    课题背景 我的课题需要制作一个二维码,里面包含着表格数据,以便后期识别二维码,并把二维码里存储的内容读取出来. 这是第一步制作二维码方法的汇总,剩下两步给了传送门! 制作二维码方法汇总 制作二维码的方 ...

  7. delphi Mercadopago阿根廷支付(支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款)

    下载链接:https://download.csdn.net/download/liushenglin123/11435379 [delphi Mercadopago阿根廷支付]支持获取账户信息和余额 ...

  8. ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)

    最近做项目遇到生成二维码的问题,发现网上用的最多的是ThoughtWorks.QRCode和QrCode.Net两种方式.访问官网看着例子写了两个Demo,使用过程中发现两个都挺好用的,Thought ...

  9. Windows Phone 7 实战第二天 二维码QRcode

    越来越多的收据具备自动对焦的拍摄功能,这也意味着这些手机可以具备条码扫描功能,手机具备条码扫描功能,可以优化购物流程,快速存储电子名片(二维码)等. QR 码是二维条码的一种,QR 来自英文 &quo ...

最新文章

  1. 序列拼接工具Bowtie使用说明
  2. 万能写入sql语句,并且防注入
  3. idea的logback的getter和setter方法失效
  4. 金蝶显示中间服务器忙,金蝶显示云服务器繁忙怎么回事
  5. Changes in Android 7 Nougat
  6. python类和函数_构建程序. Python中的类和函数
  7. ExtJS的extend(Ext Designer的使用)
  8. 机器学习 正则化(regularization)
  9. Hibernate之Inverse的用法
  10. login.html id=9453,我关注的官网.html
  11. Atitit 获取一列拼接为字符串 逗号分隔 目录1.1. Sql Group_contackt,但是排序只能拍一个的。。如果多个列对应排序则不行。。。 11.2. Js 使用map函数 1
  12. 《数据库系统基础教程》读书笔记——第二章 关系数据模型(1)
  13. 世界人工智能大赛 Top1 方案!手写体 OCR 识别
  14. Python中文分词神器---jieba
  15. 台式计算机电源待机电流有多大,终于知晓电脑机箱电源12v多少安
  16. 实验十四 水下无线传感网协议仿真实验
  17. NS-miracle安装
  18. JAVA程序设计:在圆内随机生成点(LeetCode:478)
  19. 网络设备的连接以及配置
  20. MIUI系统 无法从非官方渠道安装系统应用

热门文章

  1. UVA 1329——Corporative Network
  2. js获取Json对象的长度
  3. c++【深度剖析shared_ptr】
  4. mysql 存储过程 循环结构 命名_mysql存储过程----循环结构
  5. 设计模式--1(设计模式基础,设计模式基本原则,设计模式分类)
  6. 【Leetocde | 10 】54. 螺旋矩阵
  7. MongoDB数据分布不均的解决方案
  8. web开发者工具,118页Vue面试题总结,涨姿势!
  9. LINQ to SQL
  10. 程序员自身价值值这么多钱么?