2014年7月16日 星期三

利用QrCode.Net來創建二維條碼圖形

參考引用來源:利用QrCode.Net來創建二維條碼圖形
--


1.前言:
傳統的一維條碼圖能記錄的資訊有限,而二維的條碼圖可記錄大量訊息,另外QR碼有容錯能力,可降低因為標籤部分磨損無法判讀的問題。本範例在利用open source的軟體,來建立QRCode的影像圖形。


2.說明:
QrCode.Net是一個MIT license的開放軟體,軟體最新版本可在下列網址下載:
本範例使用的版本為: 0.4 Pre-release
http://qrcodenet.codeplex.com/

QRCode的說明可參考以下網址:
http://en.wikipedia.org/wiki/QR_code

將軟體下載後解壓縮,在Gma.QrCodeNet.Encoding.Net35目錄下複製Gma.QrCodeNet.Encoding.Net35.dll到自己的專案bin目錄下。

加入參考:
Gma.QrCodeNet.Encoding.Net35.dll
加入命名空間:

using Gma.QrCodeNet.Encoding;
using Gma.QrCodeNet.Encoding.Windows.Render;
程式碼:

//輸入要製作二維條碼的字串
string codeString = "http://einboch.pixnet.net/blog";

//實例化,設定錯誤修正容量
/*
  Level L (Low)      7%  of codewords can be restored.
  Level M (Medium)   15% of codewords can be restored.
  Level Q (Quartile) 25% of codewords can be restored.
  Level H (High)     30% of codewords can be restored.
*/
QrEncoder encoder = new QrEncoder(ErrorCorrectionLevel.L);

//編碼
QrCode code = encoder.Encode(codeString);

//定義線條寬度
int moduleSizeInPixels = 12;

//繪二維條碼圖初始化
GraphicsRenderer renderer = new GraphicsRenderer(new FixedModuleSize(moduleSizeInPixels, QuietZoneModules.Two), Brushes.Black, Brushes.White);

//留白區大小
Point padding = new Point(10, 16);

//取得條碼圖大小
DrawingSize dSize = renderer.SizeCalculator.GetSize(code.Matrix.Width);
int imgWidth = dSize.CodeWidth + 2 * padding.X;
int imgHeight = dSize.CodeWidth+2 * padding.Y;
//設定影像大小
Image img = new Bitmap(imgWidth, imgHeight);
pictureBox1.Width = imgWidth;
pictureBox1.Height = imgHeight;
//繪製二維條碼圖
Graphics g = Graphics.FromImage(img);
renderer.Draw(g, code.Matrix, padding);

pictureBox1.Image = img;

沒有留言:

張貼留言