winform生成条形码和二维码(ZXing.Net)

首先在项目添加ZXing.Net。

工具-->Nuget包管理器-->Nuget程序包  在所搜栏输入 ZXing.Net 如下图:

添加完成后会看见:

效果图:

所有代码:

    /// <summary>
        /// 条形码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            System.Drawing.Image image;
            int width = 117, height = 55;
            string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "TXM.jpg";
            if (File.Exists(fileSavePath))
                File.Delete(fileSavePath);
            GetBarcode(height, width, BarcodeLib.TYPE.CODE128, DateTime.Now.ToString("yyyyMMddHHMMss"), out image, fileSavePath);
            pictureBox1.Image = Image.FromFile("TXM.jpg");
        }

        /// <summary>
        /// 条形码
        /// </summary>
        /// <param name="height"></param>
        /// <param name="width"></param>
        /// <param name="type"></param>
        /// <param name="code"></param>
        /// <param name="image"></param>
        /// <param name="fileSaveUrl"></param>
        public static void GetBarcode(int height, int width, BarcodeLib.TYPE type, string code, out System.Drawing.Image image, string fileSaveUrl)
        {
            try
            {
                image = null;
                BarcodeLib.Barcode b = new BarcodeLib.Barcode();
                b.BackColor = System.Drawing.Color.White;//图片背景颜色
                b.ForeColor = System.Drawing.Color.Black;//条码颜色
                b.IncludeLabel = true;
                b.Alignment = BarcodeLib.AlignmentPositions.LEFT;
                b.LabelPosition = BarcodeLib.LabelPositions.BOTTOMCENTER;//code的显示位置
                b.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg;//图片格式
                System.Drawing.Font font = new System.Drawing.Font("verdana", 10f);//字体设置
                b.LabelFont = font;
                b.Height = height;//图片高度设置(px单位)
                b.Width = width;//图片宽度设置(px单位)

                image = b.Encode(type, code);//生成图片
                image.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);
                image.Dispose();
            }
            catch (Exception ex)
            {

                image = null;
            }
        }

        /// <summary>
        /// 二维码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            //生成二维码
           // Generate1("这是二维码");

            //生成带logo的二维码
            Generate3("这是二维码");

        }

        /// <summary>
        /// 生成二维码,保存成图片
        /// </summary>
        static void Generate1(string text)
        {
            BarcodeWriter writer = new BarcodeWriter();
            writer.Format = BarcodeFormat.QR_CODE;
            QrCodeEncodingOptions options = new QrCodeEncodingOptions();
            options.DisableECI = true;
            //设置内容编码
            options.CharacterSet = "UTF-8";
            //设置二维码的宽度和高度
            options.Width = 500;
            options.Height = 500;
            //设置二维码的边距,单位不是固定像素
            options.Margin = 1;
            writer.Options = options;

            Bitmap map = writer.Write(text);
            string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "EWM.jpg";
            if (File.Exists(fileSavePath))
                File.Delete(fileSavePath);
            map.Save(fileSavePath, ImageFormat.Png);
            map.Dispose();
        }

        /// <summary>
        /// 读取二维码
        /// 读取失败,返回空字符串
        /// </summary>
        /// <param name="filename">指定二维码图片位置</param>
        static string Read1(string filename)
        {
            BarcodeReader reader = new BarcodeReader();
            reader.Options.CharacterSet = "UTF-8";
            Bitmap map = new Bitmap(filename);
            Result result = reader.Decode(map);
            return result == null ? "" : result.Text;
        }

        //读取内容
        private void button3_Click(object sender, EventArgs e)
        {
            //读取二维码
           // string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "BarcodePattern11.jpg";

            //读取带logo的二维码
            string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "logo_Img.jpg";

            //读取条形码码
            //string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "TXM.jpg";
            string result = Read1(fileSavePath);
            label1.Text = result;
        }

        /// <summary>
        /// 生成带Logo的二维码
        /// </summary>
        /// <param name="text"></param>
        public void Generate3(string text)
        {

            //Logo 图片
            Bitmap logo = new Bitmap(AppDomain.CurrentDomain.BaseDirectory + "d06.png");
            //构造二维码写码器
            MultiFormatWriter writer = new MultiFormatWriter();
            Dictionary<EncodeHintType, object> hint = new Dictionary<EncodeHintType, object>();
            hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");
            hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);

            //生成二维码
            BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, 300, 300, hint);
            BarcodeWriter barcodeWriter = new BarcodeWriter();
            Bitmap map = barcodeWriter.Write(bm);

            //获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸)
            int[] rectangle = bm.getEnclosingRectangle();

            //计算插入图片的大小和位置
            int middleW = Math.Min((int)(rectangle[2] / 3.5), logo.Width);
            int middleH = Math.Min((int)(rectangle[3] / 3.5), logo.Height);
            int middleL = (map.Width - middleW) / 2;
            int middleT = (map.Height - middleH) / 2;

            //将img转换成bmp格式,否则后面无法创建Graphics对象
            Bitmap bmpimg = new Bitmap(map.Width, map.Height, PixelFormat.Format32bppArgb);
            using (Graphics g = Graphics.FromImage(bmpimg))
            {
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                g.DrawImage(map, 0, 0);
            }
            //将二维码插入图片
            Graphics myGraphic = Graphics.FromImage(bmpimg);
            //白底
            myGraphic.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH);
            myGraphic.DrawImage(logo, middleL, middleT, middleW, middleH);

            //保存成图片
            string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "logo_Img.jpg";
            if (File.Exists(fileSavePath))
                File.Delete(fileSavePath);
            bmpimg.Save(fileSavePath, ImageFormat.Png);
            pictureBox2.Load(fileSavePath);
            map.Dispose();
        }

原文地址:https://www.cnblogs.com/bin521/p/9875014.html

时间: 2024-09-27 22:34:47

winform生成条形码和二维码(ZXing.Net)的相关文章

生成条形码和二维码并实现打印的功能

生成条形码和二维码并实现打印的功能     开篇:平台下编解条形码和二维码的工具. 下载地址:http://pan.baidu.com/s/1kTr3Vuf Step1:使用VS2010新建一个窗体程序项目: Step2:添加三个类:分别是BarCodeClass.cs.DocementBase.cs.imageDocument.cs.(下一步贴出这些类的代码);;;;添加下载回来的引用zxing.dll. >说明: <1>   BarCodeClass.cs主要用来实现条形码和二维码的

C#---生成条形码,二维码,分界线并打印

分享一个可以生成条形码,二维码的dll,不多说,直接上代码: Printer: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Drawing; 7 using ThoughtWorks.QRCode.Codec; 8 9 namespace PrintFun 10

使用谷歌Z生成条形码以及二维码

下载地址:http://zxingnet.codeplex.com/ zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便. 首先下载二进制dll文件,引入工程: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.

ZXing生成条形码、二维码、带logo二维码

采用的是开源的ZXing,Maven配置如下,jar包下载地址,自己选择版本下载,顺便推荐下Maven Repository <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version

iOS开发——生成条形码,二维码

- (void)viewDidLoad { [super viewDidLoad]; self.imageView.image = [self generateBarCode:@"1524829417" width:60 height:60]; self.imageView2.image = [self generateQRCode:@"1524829417" width:60 height:60]; } - (UIImage *)generateQRCode:(N

使用zxing生成和解析二维码

二维码: 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的: 在代码编制上巧妙的利用构成计算机内部逻辑基础的0和1比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图像输入设备或光电扫描设备自动识读以实现信息自动处理: 二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息: 二维码相对于条形码的优势就是省空间: zxing简介: zxing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库

java利用zxing生成仿新浪微博二维码

原文:java利用zxing生成仿新浪微博二维码 源代码下载地址:http://www.zuidaima.com/share/1550463729896448.htm 效果图: 说明在readme.txt文件

使用ZXing扫描条形码和二维码

主要是介绍使用ZXing库进行条形码和二维码的扫描 本帖里面使用的库是别人精简以后的 在代码注释里面作者 - Ryan.Tang 这里主要是介绍一下关于扫描界面 下面是关于属性的介绍 ScanView核心源码解析 ScanView 自定义属性 <declare-styleable name="ScanView"> <!--指定扫描区域的背景图片--> <attr name="scanBackground" format="re

用C#实现的条形码和二维码编码解码器

转自:http://www.cnblogs.com/tuyile006/archive/2013/01/16/2863367.html 本篇介绍可以在C#中使用的1D/2D编码解码器.条形码的应用已经非常普遍,几乎所有超市里面的商品上面都印有条形码:二维码也开始应用到很多场合,如火车票有二维码识别.网易的首页有二维码图标,用户只需要用手机扫描一下就可以看到手机版网易的网址,免去了输入长串字符的麻烦. 条形码的标准: 条形码的标准有ENA条形码.UPC条形码.二五条形码.交叉二五条形码.库德巴条形