[Component] QR Code 元件 - Zxing

摘要:[Component] QR Code 元件 - Zxing

Zxing是基於Java開發的開源專案,同時開發多種語言類別庫,目前版本2.1版。
主要支援以下語言開發
Java、C++、C#、Ruby、Object-C(QR code only)、Actionscript
用於解析多種格式的條形碼和二維碼

  • UPC-A and UPC-E
  • EAN-8 and EAN-13
  • Code 39
  • Code 93
  • Code 128
  • ITF
  • Codabar
  • RSS-14 (all variants)
  • RSS Expanded (most variants)
  • QR Code
  • Data Matrix
  • Aztec ('beta' quality)
  • PDF 417 ('alpha' quality)

使用說明: (以下以不同方案分開建置2個專案說明,建置方式亦可在同一方案裡建置2個專案)

開發環境:Windows 7 Professional Edition 64Bit、Visual Studio 2010 Professional Edition、Zxing 2.1

  • 1. 下載原始碼檔案後解壓縮至本地目錄
  • 2. Visual Studio 2010開啟新專案(類別庫)

     
  • 3. 將解壓縮的zxing-2.1\csharp目錄內所有檔案複製加入到新專案內

     
  • 4. 建置專案編譯產生.dll

     
  • 5. 開啟欲引用的專案將.dll加入參考

  • 6. 程式using以下二個命名空間(產生QR Code)

     
  • 7. 產生QR Code演示
    
    using System;
    using System.Collections.Generic;
    using System.Text;
    using com.google.zxing.common;
    using com.google.zxing;
    using System.Drawing;
    
    namespace AP_YyQrCode
    {
        /// 
        /// QR Code產生
        /// 
        class MyZxingQrCdode
        {
            private int _intWidth;  //寬度
            private int _intHeight; //高度
            private Color _clrBack = ColorTranslator.FromHtml("Black");  //QR Code著色顏色
            private Color _clrFront = ColorTranslator.FromHtml("White"); //背景顏色
    
            /// 
            /// 建構子
            /// 
            /// 
    
    寬度
            /// 
    
    高度
            public MyZxingQrCdode(int intWidth_, int intHeight_)
            {
                this._intWidth = intWidth_;
                this._intHeight = intHeight_;
            }
    
            /// 
            /// 設定背景顏色
            /// 
            public Color BackColor { set { this._clrBack = value; } }
    
            /// 
            /// 設定QR Code著色顏色
            /// 
            public Color FrontColor { set { this._clrFront = value; } }
    
            /// 
            /// 產生QR Code圖檔
            /// 
            /// 
    
    文字內容
            /// 
            public Image genImage(string strContext)
            {
                //依文字、產出格式與寬高產生QR Code內容
                ByteMatrix byteMatrix = new MultiFormatWriter().encode(strContext, BarcodeFormat.QR_CODE
                    , this._intWidth, this._intHeight);
    
                //初始圖檔
                Bitmap bmap = new Bitmap(_intWidth, _intHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    
                //圖檔依QR Code內容著色
                for (int x = 0; x < _intWidth; x++)
                {
                    for (int y = 0; y < _intHeight; y++)
                    {
                        bmap.SetPixel(x, y, byteMatrix.get_Renamed(x, y) != -1 ? this._clrBack : this._clrFront);
                    }
                }
                return bmap;
            }
        }
    }