二維碼原理介紹:
二維碼為什么是黑白相間的?黑色表示二進制的“1”,白色表示二進制的“0”
“我們之所以對二維碼進行掃描能讀出那么多信息,就是因為這些信息被編入了二維碼之中。”黃海平說,“制作二維碼輸入的信息可以分成三類,文本信息,比如名片信息;字符信息,比如網址、電話號碼;還有圖片信息,甚至還可以包括簡短的視頻。”數據信息是怎么被編入的呢?信息輸入后,首先要選擇一種信息編碼的碼制。現在常見的二維碼都是以QR碼作為編碼的碼制。QR碼是矩陣式二維碼,它是在一個矩形空間內,通過黑、白像素在矩陣中的不同分布,來進行編碼的。我們知道電腦使用二進制(0和1)數來貯存和處理數據,而在二維碼中,用黑白矩形表示二進制數據我們肉眼能看到的黑色表示的是二進制“1”,白色表示二進制的“0”,黑白的排列組合確定了矩陣式二維條碼的內容,以便於計算機對二維碼符號進行編碼和分析。
百度經驗:http://jingyan.baidu.com/article/86f4a73e520e3b37d6526981.html
開始使用:
命名規則最好遵守,因為套入模版使用的是反射技術,對前綴命名有要求。
1.創建類庫
命名Yc.QrcodeLib.xxx
2.創建類
命名QrEncode
手腳架:
基礎參數:
/// <summary> /// 二維碼默認參數 /// </summary> QRCodeEncoder
/// <summary> /// 二維碼大小 /// </summary> public int QRCodeScale { get; set; } /// <summary> /// 二維碼版本(默認0時,自動適應版本) /// </summary> public int QRCodeVersion { get; set; } /// <summary> /// 二維碼編碼 /// </summary> public QRCodeEncoder.ENCODE_MODE QRCodeEncodeMode { get; set; } public enum ENCODE_MODE { ALPHA_NUMERIC = 0, NUMERIC = 1, BYTE = 2, } /// <summary> /// 二維碼容錯率 /// </summary> public QRCodeEncoder.ERROR_CORRECTION QRCodeErrorCorrect { get; set; } public enum ERROR_CORRECTION { L = 0, M = 1, Q = 2, H = 3, } /// <summary> /// 二維碼容邊距 /// </summary> public int FrameSpacing { get; set; } /// <summary> /// 二維碼容高邊距 /// </summary> public int FrameSpacingH { get; set; } /// <summary> /// 二維碼容寬邊距 /// </summary> public int FrameSpacingW { get; set; }
基礎方法:
/// <summary> /// 修改填充形狀 /// </summary> ChangeFillShape(...)
填充色示例:
QRCodeEncoder _qrCodeEncoder = new QRCodeEncoder(); _qrCodeEncoder.QRCodeForegroundColor = Color.Red;
背景色示例:
QRCodeEncoder _qrCodeEncoder = new QRCodeEncoder(); _qrCodeEncoder.QRCodeBackgroundColor = Color.Red;
邊距示例:
QRCodeEncoder _qrCodeEncoder = new QRCodeEncoder(); _qrCodeEncoder.FrameSpacing = 4;
其他就不一一示例了,都大同小異的。
希望這篇文章對大家,研究二維碼有更深的認識。
以下是開源地址,國外github,國內oschina.net
oschina.net:
http://git.oschina.net/cheng5x/Yc.QrCode
github:
https://github.com/cheng5x/YcQrCode
碼曬客討論QQ群:
28629273