首页 > 代码库 > c# 使用ZXing.dll库生成二维码

c# 使用ZXing.dll库生成二维码

最近工作中有需要一个需求,就是把一个服务地址生成二维码,可以用来扫码分享,网上找了下方法也比较多,我这里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;
        }

看一下效果:

随便找了个二维码:

技术分享

扫码结果如下:

技术分享

 

c# 使用ZXing.dll库生成二维码