其实现在二维码越来越流行,网上也有很多生成二维码的类库。写一下WEB生成二维码注意事项吧!

目前C#生成二维码大部分都是使用ThoughtWorks.QRCode或者ZXing类库生成,主要说一下ThoughtWorks,因为第一个找到的是这个类库的代码。

第一步:下载ThoughtWorks类库

搜一下“QRCode.net源码”会有很多,下载完后可以看到“QRCodeSample_DLL”文件,喜欢的话先运行看一下效果,了解一下二维码的生成需要哪些基本参数。

参数说明:

Data:需要进行二维码显示的文字

Encoding:编码方式,主要还得看二维码要显示的文字,中文就选择BYTE吧。

Correction Level:设置编码错误纠正级别

Version:版本验证

Size:画二维码时使用,值越大生成的二维码图片像素越高

运行效果:

aaarticlea/png;base64,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" alt="" />

第二步:查看源码文件
源码文件夹中主要的就在“QRCodeLib”中了,有兴趣可以研究一下每一个类的写法。

这里只说一下用法:

将“QRCodeLib”程序集生成dll放入项目或者直接将程序集放入项目,新建一个Web页面“CreatQRCode.aspx”

页面代码:

<body style="background:#fff; width:690px; margin-left:auto; margin-right:auto;">
<form id="form1" runat="server">
<h2>
QRCODE二维码生成DEMO</h2>
<h3>
生成二维码显示区:</h3>
<div style="width: 600px; height: 200px; border: 1px solid #ccc">
<asp:Image ID="picEncode" runat="server" Style="margin-left: auto; margin-right: auto;"
/>
</div>
<h3>
二维码参数配置区:</h3>
<dl>
<dt>明文数据</dt><dd style="width: 400px; height: 25px;"><input type="text" runat="server"
id="txtEncodeData" style="width: 400px; height: 25px;" /></dd></dl>
<dl>
<dt>编码类型</dt>
<dd>
<asp:DropDownList ID="Encoding" runat="server">
<asp:ListItem Text="字母数字" Value="AlphaNumeric"></asp:ListItem>
<asp:ListItem Text="数字" Value="Numeric"></asp:ListItem>
<asp:ListItem Selected="True" Text="字节" Value="Byte"></asp:ListItem>
</asp:DropDownList>
</dd>
<dt>校正水平</dt>
<dd>
<asp:DropDownList ID="Correction_Level" runat="server">
<asp:ListItem Text="L" Value="L"></asp:ListItem>
<asp:ListItem Selected="True" Text="M" Value="M"></asp:ListItem>
<asp:ListItem Text="Q" Value="Q"></asp:ListItem>
<asp:ListItem Text="H" Value="H"></asp:ListItem>
</asp:DropDownList>
</dd>
</dl>
<dl>
<dt>版本0~40</dt>
<dd>
<asp:TextBox ID="cboVersion" runat="server" Text="5"></asp:TextBox>
</dd>
<dt>图片大小</dt>
<dd>
<asp:TextBox ID="size" runat="server" Text="4"></asp:TextBox></dd>
</dl>
<dl>
<dd style="text-align: center;">
<asp:Button ID="Encode" runat="server" Text="生成" CssClass="btn_style" OnClick="Encode_Click" /></dd>
<dd style="text-align: center;">
<asp:Button ID="save" runat="server" Text="保存" CssClass="btn_style" /></dd></dl>
</form>
</body>

生成二维码事件:

        /// <summary>
/// 生成二维码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Encode_Click(object sender, EventArgs e)
{
string message = "";
//验证加密数据不能为空
if (txtEncodeData.Value.Trim() == String.Empty)
{
message += "明文数据不能为空;";
return;
}
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
//获取编码方式
String encoding = Encoding.SelectedItem.Value;
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(size.Text);
qrCodeEncoder.QRCodeScale = scale;
}
catch (Exception ex)
{
message += "图片大小非法输入";
return;
}
//版本验证
try
{
int version = Convert.ToInt16(cboVersion.Text);
//设置为0主要是防止编码的字符串太长时发生错误
qrCodeEncoder.QRCodeVersion = version;
}
catch (Exception ex)
{
message += "版本大小非法输入";
}
//设置编码错误纠正级别
string errorCorrect = Correction_Level.SelectedItem.Value;
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; if (message == "")
{
//验证文件路径是否存在
if (!File.Exists(Server.MapPath("~/Upload/QRCode/QRCode.jpg")))
{
File.Create(Server.MapPath("~/Upload/QRCode/QRCode.jpg"));
}
Bitmap image;
String data = txtEncodeData.Value;
image = qrCodeEncoder.Encode(data);
image.Dispose();
image.Save(Server.MapPath("~/Upload/QRCode/QRCode.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
picEncode.ImageUrl = "~/Upload/QRCode/QRCode.jpg";
}
else
{
Master.Page.ClientScript.RegisterStartupScript(Page.GetType(), "aa", "alert('" + message + "')", true);
}
}

第三步:此时编译应该会出现“索引超出了数组界限”

错位位置:rsTemp[rsBlockNumber][j] = codewords[i2];

aaarticlea/png;base64,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" alt="" />

这个地方刚开始比较难搞,调试发现缺少“qrcode_data”文件夹下资源。

调试中当前环境运行路径为:C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\qrcode_data

那么把读取的资源放到指定位置即可。

1.找到“QRCodeLib”下“Resources”

2.在读取文件的指定目录下创建文件夹“qrcode_data”

3.将"Resources"文件内容拷贝到新建的“qrcode_data”

以上三个操作即可排除“索引超出了数组界限”的错误

在Web中或者通过修改一下修改“QRCodeEncoder.cs”文件,在构造函数中对“QRCODE_DATA_PATH”进行初始化。

1.修改构造函数

//修改构造函数
public QRCodeEncoder(string qrcode_data)
{
qrcodeErrorCorrect = ERROR_CORRECTION.M;
qrcodeEncodeMode = ENCODE_MODE.BYTE;
qrcodeVersion = ; qrcodeStructureappendN = ;
qrcodeStructureappendM = ;
qrcodeStructureappendParity = ;
qrcodeStructureappendOriginaldata = ""; qrCodeScale = ;
qrCodeBackgroundColor = Color.White;
qrCodeForegroundColor = Color.Black; QRCODE_DATA_PATH = qrcode_data;
//QRCODE_DATA_PATH = Environment.CurrentDirectory + @"\qrcode_data"; }

2.将“qrcode_data”放在站点根目录

3.实例化QRCodeEncoder类时进行“qrcode”路径参数传递

QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(Server.MapPath("~/qrcode_data"));

第四步:这时会发现如果要生成中文二维码会出现乱码,那么请在“QRCodeLib”程序集中,修改编码方式未UTF-8即可。

public virtual Bitmap Encode(String content)
{
if (QRCodeUtility.IsUniCode(content))
{
//return Encode(content, Encoding.Unicode);
//支持中文
return Encode(content, Encoding.UTF8);
}
else
{
return Encode(content, Encoding.ASCII);
}
}

运行查看效果:

aaarticlea/png;base64,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EagAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEAGBCgBABAQqAAAREKgAAERAoAIAEEG0QAUA4IiLEKgAAKAWgQoAQAQEKgAAERCoAABEQKACABBBfwK1szybzC53zP+d31Sd5VljYfaNgtnl5fmkovSqwqv19zbnk2R+s/p9vWxzvrva/GZ3h0yblu3adijfF+EFwo77rC0dJwBgBHgFaiX3asIgD7D8f5NSspVIy9PvVaJS51PhJTqxiq1kCZ42n2+lmuzmS+Y37dss7afx79p/uo8QADAG+tFDLcWRmSX2KCumTfH/Kq+oS/dCEnaW57Mk3cz6q7Z+sbk5/0AN+CsjfaV4/NbNAQBGR/xAzTIjHfYV80/svRXixTI4a27J1e2zJ978phlqxqatO1pqvqYn7d6ZvHdcbLazPJsk88sduq8AMNJiB2qeVjpBdEpliWhNx/LCYieu2Hnz+iSykIOd5dlkfn6+uA/d/zOa19s1e6jV7mQxFr2kzZfHf41BcI+xYOMFAIDhFDtQu5E3v5n/nytQCxmZvqaQh/a4MWchdTodS8s687LPUM20nZ/PGq2ORusoNQO1lJ299lDLh+31ySqBCgBDry+zfLN+3+b87PKm1JdL18hDJctEaaS227weJM1m65rhbckc27hwlm6FGO4sz84uL+fTlwqBanRoy7Ot6juntlcWDx0AMPriB2opOsw8qvQjN+eT+XlbupVbLI7YdmtZii0XPp90fSaq97EYwen6haBOSoFa3THX57uOQE27nNXJygCAEdWHz1CL8SV+2lju9XkEavaBY2d5edP8pt7Wpp7X0+2/OipX0r0qJX+1SrY2UBv0UCuf4pKpADAG+n6nJGcPValSoC5X43d+0/bppJHT5qBtdf6scOuHymRbsUdb3OnC/4X3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" alt="" />

如果需要在二维码中心加上自己的小图标,可以把两个图层合并在一起。

判断如果传入Image对象,则叠加绘制。

 //绘制中心图标
if (CenterImage != null)
{
if (CenterImage.Height != || CenterImage.Width != )
{
CenterImage = KiResizeImage(CenterImage, , , );
}
Graphics gr = Graphics.FromImage(image);
gr.DrawImage(image, , , image.Width, image.Height);
int s_x = (image.Width / - (CenterImage.Width / ));
int s_y = (image.Width / - (CenterImage.Width / ));
int size_width = CenterImage.Width;
int size_height = CenterImage.Height;

          //绘制边框
          //gr.FillRectangle(System.Drawing.Brushes.White, s_x-1, s_y-1, size_width+2, size_height+2);

                gr.DrawImage(CenterImage, s_x, s_y, size_width, size_height);
GC.Collect();
}

处理中心图标大小

        /// <summary>
/// Resize图片
/// </summary>
/// <param name="bmp">原始Bitmap</param>
/// <param name="newW">新的宽度</param>
/// <param name="newH">新的高度</param>
/// <param name="Mode">保留着,暂时未用</param>
/// <returns>处理以后的图片</returns>
public static Image KiResizeImage(Image bmp, int newW, int newH, int Mode)
{
try
{
Image b = new Bitmap(newW, newH);
Graphics g = Graphics.FromImage(b);
// 插值算法的质量
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(bmp, new Rectangle(, , newW, newH), new Rectangle(, , bmp.Width, bmp.Height), GraphicsUnit.Pixel);
g.Dispose();
return b;
}
catch
{
return null;
}
}

效果:

实现过程中也非常感谢这些博友的奉献

果子:http://www.cnblogs.com/tianguook/p/3513497.html

毅无涯:http://www.cnblogs.com/yiwuya/archive/2012/08/13/3018795.html

C#生成二维码示例的更多相关文章

  1. 通过CoreImage生成二维码

    从IOS7开始集成了二维码的生成和读取功能 生成二维码的步骤: 1.导入CoreImage框架 2.通过滤镜CIFilter生成二维码 二维码的内容(传统的条形码只能放数字): 纯文本 名片 URL ...

  2. php背景图片上生成二维码,二维码上带logo 代码示例 (原)

    依赖库文件 phpqrcode.php (下载地址://www.jb51.net/codes/189897.html :或者在官网下载:http://phpqrcode.sourceforge.net ...

  3. C#生成二维码的方法

    本文实例讲述了C#生成二维码的方法.分享给大家供大家参考.具体实现方法如下: 首先引用ThoughtWorks.QRCode.dll 具体代码如下: 复制代码 代码如下: using System; ...

  4. QRCode.js 生成二维码

    QRCode.js 是一个用于生成二维码图片的插件. github地址 在线实例 实例预览 基础示例 实例预览 API 接口 使用方法 载入 JavaScript 文件 <script src= ...

  5. 通过jquery-qrcode在线生成二维码

    随着移动互联网的发展,二维码现在应用得越来越广泛了,随手扫扫就可以浏览网站.加个好友什么的,比起手工输入真的是方便太多了. 前期做了一个综合测评系统,考虑逐步实现移动化,一长串的IP地址用户输入也不方 ...

  6. Java使用ZXing生成二维码条形码

    一.下载Zxingjar包 本实例使用的是 zxing3.2.0的版本  下载地址 http://pan.baidu.com/s/1gdH7PzP 说明:本实例使用的3.2.0版本已经使用的java7 ...

  7. C#生成二维码名片

    摘自<31天学会CRM项目开发<C#编程入门级项目实战>> 本例将使用ThoughtWorks.QRCode类库生成二维码名片.正式编码前,先了解一下什么是vCard?它是一种 ...

  8. iOS开发——生成二维码——工具类

    啥也不说,直接上源码,拷过去就能用.生成二维码的工具类使用方法在ProduceQRCode.h里有示例说明 分别将下面的ProduceQRCode.h和ProduceQRCode.m对应的代码考到自己 ...

  9. php生成二维码,使用qrcode类库创建

    传说Google有个接口,可以生成二维码,这让我有点鸡冻不已,于是,......(省略1000字).结果,我找到了另外一个方法,是使用一个php类库,该工具叫:qrcode,但下载该工具可真是要人命. ...

随机推荐

  1. 简单插入排序(C++版)

    #include <iostream> using namespace std; /** \ Insert Sort * * Key: * * reserve: tm = a[i] * * ...

  2. JS网址正则验证

    function IsURL(str_url){ var strRegex = "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9 ...

  3. ListView滚动到顶部

    videoAdapter.notifyDataSetChanged();videoListView.setSelection(0); 注意顺序先notify后setSelection

  4. C 语言中 free() 函数简单分析

    又是一个睡不着的夜晚,现在是凌晨03:16,不知道是不是感冒的原因,头脑并不是清醒,但是就是睡不着.摸着黑打开电脑,洗了杯子抓了点茶叶,然后打开饮水机电源.舍友们都睡着了,我戴着耳机听着轻音乐,也能听 ...

  5. C++@类对象和类指针的区别(转)

    原文地址不详 如下程序: #include <iostream> #include <string> using namespace std; class Student { ...

  6. java枚举实例

    实例一: public enum OrderOption {ASC,DESC; } 实例二(带参数构造函数): public enum OrderOption { ASC("ASC" ...

  7. Unity坐标系

    Unity 使用的是左手坐标系

  8. PHP-FPM-failed to ptrace(PEEKDATA) pid 123: Input/output error

    If you're running PHP-FPM you can see these kind of errors in your PHP-FPM logs. $ tail -f php-fpm.l ...

  9. linux如何查看磁盘剩余空间

    [root@Linux var]# df -hl 文件系统 容量 已用 可用 已用% 挂载点 /dev/hdb2 75G 75G 0 100% / /dev/hdb1 99M 9.2M 85M 10% ...

  10. Linux文件操作

    Linux中一切都是文件.如普通文件,目录,设备,管道等.操作这些文件有两种方式,调用系统函数和使用标准I/O库. 一.调用系统函数1.文件描述符:数值类型,表示打开的文件标识程序运行时,会首先打开3 ...