您好,登錄后才能下訂單哦!
又好一段時間沒有寫寫東西了,繼續回歸原來的模式,多做記錄,最近要實現個unity的二維碼方面的功能,首先就要解決生成二維碼的問題,這個倒是有這方面的組件,然后我通過強大的反編譯工具Reflector(想必.NET程序都知道的神器),來插件內部實現的原理。廢話不多說,先看效果二維碼在線生成工具,附帶一句這里是QR碼,當然是比較簡單的,純屬新手入門級看的
在線測試:http://114.92.225.191:5006/
更多精彩教程請關注我的微博
publicvirtual Bitmap Encode(string content, Encoding encoding)
{
//計算得到bool值數組
bool[][] flagArray = this.calQrcode(encoding.GetBytes(content));
//定義畫刷
SolidBrush brush = new SolidBrush(this.qrCodeBackgroundColor);
Bitmap p_w_picpath = new Bitmap((flagArray.Length * this.qrCodeScale) + 1, (flagArray.Length * this.qrCodeScale) + 1);
//繪圖
Graphics graphics = Graphics.FromImage(p_w_picpath);
//繪制二維碼背景
graphics.FillRectangle(brush, new Rectangle(0, 0, p_w_picpath.Width, p_w_picpath.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 p_w_picpath;
}
這里主要是用到
創建.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>
<br/>
生成的二維碼名稱:<asp:TextBoxID="TextBox3"runat="server"></asp:TextBox>
<br/>
<asp:LabelID="Label1"runat="server"Text=""></asp:Label>
<br/>
<asp:ButtonID="Button1"runat="server"Text="生成二維碼"onclick="Button1_Click"/>
</div>
<div>
<ahref="http://blog.csdn.net/dingxiaowei2013">項目解析</a>
</div>
</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 p_w_picpath = qrCodeEncoder.Encode(data);
System.IO.MemoryStream MStream = new System.IO.MemoryStream();
p_w_picpath.Save(MStream, System.Drawing.Imaging.ImageFormat.Png);
Response.ClearContent();
Response.ContentType = "p_w_picpath/Png";
//寫圖片
Response.BinaryWrite(MStream.ToArray());
//文件路徑
//FileInfo f = new FileInfo(@"d:\zl.png");
//Directory.CreateDirectory("d:\\"+TextBox2.Text.Trim());
//當前項目路徑
Directory.CreateDirectory(Server.MapPath("~/")+"p_w_picpaths"+"http://"+TextBox2.Text.Trim());
if (!File.Exists(Server.MapPath("~/") + "p_w_picpaths" + "http://" + TextBox2.Text.Trim() + "http://" + 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("~/") + "p_w_picpaths" + "http://" + TextBox2.Text.Trim() + "http://" + 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 = "該圖片已經存在";
}
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。