<a href="http://weibo.com/dingxiaowei2013" target="_blank">更多精彩教程請關注我的微網誌</a>

主要的就是這個方法是用來生成一張二維碼圖檔的,其中this.calQrcode(encoding.GetBytes(content))這個方法是生成二維碼對應圖檔的一個bool數組,然後就是通過這個0,1數組來繪制成二維碼
publicvirtual Bitmap Encode(string content, Encoding encoding)
{
//計算得到bool值數組
bool[][] flagArray = this.calQrcode(encoding.GetBytes(content));
//定義畫刷
SolidBrush brush = new SolidBrush(this.qrCodeBackgroundColor);
Bitmap image = new Bitmap((flagArray.Length * this.qrCodeScale) + 1, (flagArray.Length * this.qrCodeScale) + 1);
//繪圖
Graphics graphics = Graphics.FromImage(image);
//繪制二維碼背景
graphics.FillRectangle(brush, new Rectangle(0, 0, image.Width, image.Height));
//設定背景顔色
brush.Color = this.qrCodeForegroundColor;
//根據bool數組繪制前端二維碼
for (int i = 0; i < flagArray.Length; i++)
{
for (int j = 0; j < flagArray.Length; j++)
{
if (flagArray[j][i])
{
graphics.FillRectangle(brush, j * this.qrCodeScale, i * this.qrCodeScale, this.qrCodeScale, this.qrCodeScale);
}
}
}
return image;
}
這裡主要是用到
建立.NET應用程式
Default.aspx
<%@ Page Language="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>無标題頁</title>
</head>
<body>
<formid="form1"runat="server">
<div>
請輸入内容:<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>
<br/>
生成的檔案夾名稱:<asp:TextBoxID="TextBox2"runat="server"></asp:TextBox>
生成的二維碼名稱:<asp:TextBoxID="TextBox3"runat="server"></asp:TextBox>
<asp:LabelID="Label1"runat="server"Text=""></asp:Label>
<asp:ButtonID="Button1"runat="server"Text="生成二維碼"onclick="Button1_Click"/>
</div>
<ahref="http://blog.csdn.net/dingxiaowei2013">項目解析</a>
</form>
</body>
</html>
Default.aspx.cs
using System;
using ThoughtWorks.QRCode.Codec;
using System.IO;
using System.Text;
using System.Drawing;
public partial class _Default : System.Web.UI.Page
protectedvoid Page_Load(object sender, EventArgs e)
protectedvoid Button1_Click(object sender, EventArgs e)
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
//qrCodeEncoder.QRCodeBackgroundColor = Color.FromArgb(255, 255, 0);
//設定前景色
//qrCodeEncoder.QRCodeForegroundColor = Color.GreenYellow;
//編碼格式
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
//設定每個二維碼像素點的大小
qrCodeEncoder.QRCodeScale = 4;
//QR碼版本
//QR碼所允許規格系列為21×21子產品(版本1)~177×177子產品(版本40)
qrCodeEncoder.QRCodeVersion = 8;
//糾錯等級
//level L : 最大 7% 的錯誤能夠被糾正;
//level M : 最大 15% 的錯誤能夠被糾正;
//level Q : 最大 25% 的錯誤能夠被糾正;
//level H : 最大 30% 的錯誤能夠被糾正;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
//自定義的二維碼資料
String data = TextBox1.Text.ToString();
//Response.Write(data);
//畫圖
System.Drawing.Bitmap image = qrCodeEncoder.Encode(data);
System.IO.MemoryStream MStream = new System.IO.MemoryStream();
image.Save(MStream, System.Drawing.Imaging.ImageFormat.Png);
Response.ClearContent();
Response.ContentType = "image/Png";
//寫圖檔
Response.BinaryWrite(MStream.ToArray());
//檔案路徑
//FileInfo f = new FileInfo(@"d:\zl.png");
//Directory.CreateDirectory("d:\\"+TextBox2.Text.Trim());
//目前項目路徑
Directory.CreateDirectory(Server.MapPath("~/")+"images"+"//"+TextBox2.Text.Trim());
if (!File.Exists(Server.MapPath("~/") + "images" + "//" + TextBox2.Text.Trim() + "//" + TextBox3.Text.Trim() + ".png"))
//FileStream fs = new FileStream("d:\\" + TextBox2.Text.Trim() + "\\" + TextBox3.Text.Trim() + ".png", FileMode.CreateNew, FileAccess.ReadWrite);
FileStream fs = new FileStream(Server.MapPath("~/") + "images" + "//" + TextBox2.Text.Trim() + "//" + TextBox3.Text.Trim() + ".png", FileMode.CreateNew, FileAccess.ReadWrite);
BinaryWriter bw = new BinaryWriter(fs, UTF8Encoding.UTF8);
byte[] by = MStream.ToArray();
for (int i = 0; i < MStream.ToArray().Length; i++)
bw.Write(by[i]);
fs.Close();
else
Label1.Text = "該圖檔已經存在";
本文轉蓬萊仙羽 51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1390756,如需轉載請自行聯系原作者