一、项目引用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)的创建和读取的更多相关文章

  1. asp.net生成二维码的方法

    asp.net生成二维码的方法 [复制链接]     这个要利用一个Dll文件. 如下 Gma.QrCodeNet.Encoding.dll (105.5 KB, 下载次数: 27) 当然大家也可以直 ...

  2. 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 ...

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

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

  4. js生成二维码 qrcode

    js生成二维码 QRcode npm 地址 1.安装qrcode //在项目文件夹中执行: npm install --save qrcode //或者,将其全局安装以使用qrcode命令行来保存qr ...

  5. Java生成二维码QRCode.jar

    所需jar包:QRCode.jar:http://download.csdn.net/detail/xuxu198899223/7717745 package ewm; import java.awt ...

  6. Delphi Mercadopago支付【支持支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款等功能】

    作者QQ:(648437169) 点击下载➨Delphi Mercadopago支付 [Delphi Mercadopago支付]支持 支持支持获取账户信息和余额.创建商店,商店查询.创建二维码.二维 ...

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

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

  8. ASP.NET生成二维码

    下面使用ThoughtWorks.QRCode.dll这个类库,实现生成二维码 使用时需要增加:下面三个命名空间 using ThoughtWorks.QRCode.Codec; using Thou ...

  9. 二维码QRCode

    package com.aig.ecompass.ecard; import java.awt.image.BufferedImage; import java.io.File; import jav ...

随机推荐

  1. Notepad++常用插件

    Notepad++常用插件 1.CCompletion 进行文本的方法查找的工具. 会点击Ccompletion中的CCompletion菜单,就会出现菜单选择框 2.Compare 进行文本比较的工 ...

  2. 服装盘点机PDA在服装行业颜色尺码仓库条码高效管理应用

    服装行业的商品管理的特点是需要管理颜色和尺码 具体逻辑就是: 什么商品,什么颜色,什么尺码,入库多少个? 什么商品,什么颜色,什么尺码,出库多少个? 什么商品,什么颜色,什么尺码,还有库存多少个? 如 ...

  3. ABP中文文档及源码说明

    目录 ABP.ModuleZero(ABP自带的一套用户模块) 版本管理(Edition) 特性管理(Feature)

  4. 图-图的表示、搜索算法及其Java实现

    1.图的表示方法 图:G=(V,E),V代表节点,E代表边. 图有两种表示方法:邻接链表和邻接矩阵 邻接链表因为在表示稀疏图(边的条数|E|远远小于|V|²的图)时非常紧凑而成为通常的选择. 如果需要 ...

  5. djbc

    jdbc:mysql://localhost:3306:test这句里面分如下解析:jdbc:mysql:// 是指JDBC连接方式:localhost: 是指你的本机地址:3306 SQL数据库的端 ...

  6. MyEclipse同时配置多个tomcat

    步骤: 1.可以把原有tomcat复制一份,或者下载新的tomcat,如果有必要的话,修改/conf/service.xml文件中tomcat的端口号,避免端口同时暂用出现错误 2.请看一下图片:打开 ...

  7. SSM 框架快速整合实例--学生查询

    一.快速准备 SSM 框架即 Spring 框架.SpringMVC 框架.MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了.对于这 3 个框架还不熟悉 ...

  8. PHP随机函数rand()、mt_rand()、srand()、mt_srand() 的区别

    1.生成随机数发生器种子的函数 srand(). mt_srand() 区别:mt_srand()  比 srand() 更好的生成随机数发生器种子 定义: void srand([int $seed ...

  9. Thinkphp中import的几个用法详细介绍

    下面附上import的几个用法介绍 1.用法一 import('@.Test.Translate');@,表示项目根目录.假定根目录是:App/导入类库的路径是:App/Lib/Test/Transl ...

  10. Mysql的myqldump命令使用方法(备份与还原)

    这里的备份与还原,是指表结构数据,和表里面的具体数据(一条一条的记录)同时备份和还原.因此mysqldump,mysql这两命令很强大. 1.备份(即导出)mysqldump -u root -p e ...