ZXing 生成二维码和条形码

时间:2022-11-16 23:12:24

今天,做项目需要使用条形码扫描枪扫描二维码,以后后续手动生成二维码和条形码。看了一下,同事写的例子以及自己在网上查看了一下源码,至于源码怎么搞的,没看,直接上使用功能!

Step1:下载地址:http://zxingnet.codeplex.com/

zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便。
首先下载二进制dll文件,引入工程;**

     /// <summary>
        /// 条形码生成
        /// </summary>
        public void BarCode()
        {

            EncodingOptions options = new EncodingOptions
            {
                Width = 200,
                Height = 100,
                PureBarcode = false // 是否是纯码,如果为 false,则会在图片下方显示数字
            };

            BarcodeWriter writer = new BarcodeWriter
            {
                Format = BarcodeFormat.CODE_39,
                Options = options,
            };

            using (Bitmap bmp = writer.Write("AS12346131321646QW")) // Write 具备生成、写入两个功能
            {
                MemoryStream ms = new MemoryStream();
                {
                    bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                    Response.ContentType = "image/png";
                    Response.BinaryWrite(ms.ToArray());
                }

            }
        }

        /// <summary>
        /// 二维码
        /// </summary>
        public void QRcode()
        {
            QrCodeEncodingOptions options = new QrCodeEncodingOptions
            {
                CharacterSet = "UTF-8",
                DisableECI = true, // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。
                ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.H, // 纠错级别
                Width = 300,
                Height = 300,
                Margin = 1,
                PureBarcode = true,
            };

            // options.Hints,更多属性,也可以在这里添加。

            BarcodeWriter writer = new BarcodeWriter
            {
                Format = BarcodeFormat.QR_CODE,
                Options = options
            };


            Response.Clear();
            using (Bitmap bmp = writer.Write("AS12346131321646QW")) // Write 具备生成、写入两个功能
            {
                MemoryStream ms = new MemoryStream();
                {
                    bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

                    Response.ContentType = "image/png";
                    Response.BinaryWrite(ms.ToArray());
                }

            }
        }

        /// <summary>
        ///识别二维码还是条形码
        /// </summary>
        public void DistinguishQRorBar()
        {
            BarcodeReader reader = new BarcodeReader();
            reader.Options.CharacterSet = "UTF-8";
            using (Bitmap bmp = new Bitmap("D:\\qr.png"))
            {
                Result result = reader.Decode(bmp);
                Response.Write(result.Text);
            }
        }

纠错级别:
1. L - 约 7% 纠错能力
2. M - 约 15% 纠错能力
3. Q - 约 25% 纠错能力
4. H - 约 30% 纠错能力

二维码和条形码生成方式不同,使用不同的类,不过打印动能都是相同的的,都是使用Bitmap的形式

如果需要修改图片的样式,那么就在Bitmap画布中直接使用就行,操作Bitmap

ZXing 生成二维码和条形码

ZXing 生成二维码和条形码

http://www.360doc.com/content/13/1211/19/14578864_336409720.shtml 图片打印功能
http://www.jb51.net/article/99312.htm 文章来源