使用ZXing.dll庫生成二維碼(C#實現)


最近工作中有需要一個需求,就是把一個服務地址生成二維碼,可以用來掃碼分享,網上找了下方法也比較多,我這里po一下調用ZXing.dll庫生成二維碼的方法吧。先簡單介紹一下 ZXing庫,ZXing庫是一個開源Java類庫,可用於生成和解析多種格式的1D/2D條形碼;zxing遵循Apache License 2.0,只是工具而已,是不收費噠。

ZXing庫的下載地址:http://zxingnet.codeplex.com/

點擊下載下載后解壓壓縮包:

把Zxing加到工程應用中,以下為核心代碼:

 1 /// <summary>
 2         /// 生成二維碼圖片
 3         /// </summary>
 4         /// <param name="strMessage">要生成二維碼的字符串</param>
 5         /// <param name="width">二維碼圖片寬度</param>
 6         /// <param name="height">二維碼圖片高度</param>
 7         /// <returns></returns>
 8         private Bitmap GetQRCodeByZXingNet(String strMessage,Int32 width,Int32 height)
 9         {
10             Bitmap result = null;
11             try
12             {
13                 BarcodeWriter barCodeWriter = new BarcodeWriter();
14                 barCodeWriter.Format = BarcodeFormat.QR_CODE;
15                 barCodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");
16                 barCodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H);
17                 barCodeWriter.Options.Height = height;
18                 barCodeWriter.Options.Width = width;
19                 barCodeWriter.Options.Margin = 0;
20                 ZXing.Common.BitMatrix bm = barCodeWriter.Encode(strMessage);
21                 result = barCodeWriter.Write(bm);
22             }
23             catch (Exception ex)
24             { 
25                 //異常輸出
26             }
27             return result;
28         }

看一下生成二維碼的效果:

 

同時  Zxing庫也支持對二維碼圖片解碼

解碼的核心代碼如下:

/// <summary>
        /// 解碼二維碼
        /// </summary>
        /// <param name="barcodeBitmap">待解碼的二維碼圖片</param>
        /// <returns>掃碼結果</returns>
        private string DecodeQrCode(Bitmap barcodeBitmap)
        {
             BarcodeReader reader = new BarcodeReader();
             reader.Options.CharacterSet = "UTF-8";
             var result = reader.Decode(barcodeBitmap);
             return (result == null) ? null : result.Text;
        }

看一下效果:

隨便找了個二維碼:

掃碼結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM