欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ZXing 生成二维码和条形码

程序员文章站 2024-01-27 11:51:52
...

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

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 文章来源