zxing .net 多种条码格式的生成
下载地址:http://zxingnet.codeplex.com/
zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便。
本文主要说明一下多种类型条码的生成。
适用的场景,标签可视化设计时,自定义条码类型,预览。
遍历zxing支持的全部条码类型
- if (rb == rb1wm)
- {
- foreach (BarcodeFormat format in Enum.GetValues(typeof(BarcodeFormat)))
- {
- if (format != BarcodeFormat.All_1D)
- cbxBarcodeFormat.Items.Add(format.ToString());
- }
- cbxBarcodeFormat.Items.Remove(BarcodeFormat.QR_CODE.ToString());
- cbxBarcodeFormat.Items.Remove(BarcodeFormat.AZTEC.ToString());
- cbxBarcodeFormat.Items.Remove(BarcodeFormat.DATA_MATRIX.ToString());
- cbxBarcodeFormat.Items.Remove(BarcodeFormat.PDF_417.ToString());
- }
- if (rb == rb2wm)
- {
- cbxBarcodeFormat.Items.Add(BarcodeFormat.QR_CODE.ToString());
- cbxBarcodeFormat.Items.Add(BarcodeFormat.AZTEC.ToString());
- cbxBarcodeFormat.Items.Add(BarcodeFormat.DATA_MATRIX.ToString());
- cbxBarcodeFormat.Items.Add(BarcodeFormat.PDF_417.ToString());
- }
根据选择的类型生成条码
- Bitmap bitmap = new Bitmap(pbxBarcode.Width, pbxBarcode.Height);
- Graphics g = Graphics.FromImage(bitmap);
- g.Clear(Color.White);
- Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), cbxBarcodeFormat.SelectedItem.ToString());
- try
- {
- var options = new ZXing.Common.EncodingOptions
- {
- PureBarcode = !chxDisplayBarcode.Checked
- };
- #region 根据条码类型Write Image
- switch (Format)
- {
- case BarcodeFormat.QR_CODE:
- #region QRCode
- if (cbxErrorLevel.SelectedItem.ToString().Equals("L"))
- ErrorCorrectionLevel = QR_ErrorCorrectionLevel.L;
- if (cbxErrorLevel.SelectedItem.ToString().Equals("H"))
- ErrorCorrectionLevel = QR_ErrorCorrectionLevel.H;
- if (cbxErrorLevel.SelectedItem.ToString().Equals("M"))
- ErrorCorrectionLevel = QR_ErrorCorrectionLevel.M;
- if (cbxErrorLevel.SelectedItem.ToString().Equals("Q"))
- ErrorCorrectionLevel = QR_ErrorCorrectionLevel.Q;
- ErrorCorrectionLevel level = null;
- switch (ErrorCorrectionLevel)
- {
- case QR_ErrorCorrectionLevel.H:
- level = ZXing.QrCode.Internal.ErrorCorrectionLevel.H;
- break;
- case QR_ErrorCorrectionLevel.M:
- level = ZXing.QrCode.Internal.ErrorCorrectionLevel.M;
- break;
- case QR_ErrorCorrectionLevel.L:
- level = ZXing.QrCode.Internal.ErrorCorrectionLevel.L;
- break;
- case QR_ErrorCorrectionLevel.Q:
- level = ZXing.QrCode.Internal.ErrorCorrectionLevel.Q;
- break;
- }
- QrCodeEncodingOptions qr_options = new QrCodeEncodingOptions
- {
- Margin = 0,
- DisableECI = true,
- CharacterSet = "UTF-8",
- ErrorCorrection = level,
- PureBarcode = !chxDisplayBarcode.Checked,
- Width = pbxBarcode.Width,
- Height = pbxBarcode.Height
- };
- var qrWriter = new ZXing.BarcodeWriter();
- qrWriter.Format = BarcodeFormat.QR_CODE;
- qrWriter.Options = qr_options;
- #endregion
- bitmap = qrWriter.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(qrWriter.Options, Format, bitmap);
- break;
- case BarcodeFormat.PDF_417:
- #region PDF417
- PDF417EncodingOptions pdf_options = new PDF417EncodingOptions
- {
- Margin = 0,
- DisableECI = true,
- CharacterSet = "UTF-8",
- Width = pbxBarcode.Width,
- Height = pbxBarcode.Height,
- PureBarcode = !chxDisplayBarcode.Checked
- };
- var pdf417Writer = new ZXing.BarcodeWriter();
- pdf417Writer.Format = BarcodeFormat.PDF_417;
- pdf417Writer.Options = pdf_options;
- #endregion
- bitmap = pdf417Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(pdf417Writer.Options, Format, bitmap);
- break;
- case BarcodeFormat.DATA_MATRIX:
- #region DataMatrix
- DatamatrixEncodingOptions dataMatrix_options = new DatamatrixEncodingOptions
- {
- Margin = 0,
- SymbolShape = (ZXing.Datamatrix.Encoder.SymbolShapeHint)(Enum.Parse(typeof(ZXing.Datamatrix.Encoder.SymbolShapeHint), cbxDataMatrixOption.SelectedItem.ToString())),
- Width = pbxBarcode.Width,
- Height = pbxBarcode.Height,
- PureBarcode = !chxDisplayBarcode.Checked,
- };
- var dataMatrixWriter = new ZXing.BarcodeWriter();
- dataMatrixWriter.Format = BarcodeFormat.DATA_MATRIX;
- dataMatrixWriter.Options = dataMatrix_options;
- #endregion
- bitmap = dataMatrixWriter.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(dataMatrixWriter.Options, Format, bitmap);
- break;
- case BarcodeFormat.AZTEC:
- #region Aztec
- ZXing.Aztec.AztecEncodingOptions aztecEncodingOptions = new ZXing.Aztec.AztecEncodingOptions
- {
- Margin = 0,
- ErrorCorrection = 2,
- PureBarcode = !chxDisplayBarcode.Checked,
- Layers = 16
- };
- var aztecWriter = new ZXing.BarcodeWriter();
- aztecWriter.Format = BarcodeFormat.AZTEC;
- aztecWriter.Options = aztecEncodingOptions;
- #endregion
- bitmap = aztecWriter.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(aztecWriter.Options, Format, bitmap);
- break;
- case BarcodeFormat.CODE_128:
- #region Code128
- ZXing.OneD.Code128EncodingOptions code128_options = new ZXing.OneD.Code128EncodingOptions
- {
- Margin = 0,
- PureBarcode = !chxDisplayBarcode.Checked,
- Width = pbxBarcode.Width,
- Height = pbxBarcode.Height,
- ForceCodesetB = true
- };
- var code128_Writer = new ZXing.BarcodeWriter();
- code128_Writer.Format = BarcodeFormat.CODE_128;
- code128_Writer.Options = code128_options;
- #endregion
- bitmap = code128_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(code128_Writer.Options, Format, bitmap);
- break;
- case BarcodeFormat.CODABAR:
- var codeBar_Writer = new ZXing.BarcodeWriter();
- codeBar_Writer.Format = BarcodeFormat.CODABAR;
- codeBar_Writer.Options = options;
- bitmap = codeBar_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.EAN_13:
- var ean13_Writer = new ZXing.BarcodeWriter();
- ean13_Writer.Format = BarcodeFormat.EAN_13;
- ean13_Writer.Options = options;
- bitmap = ean13_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.EAN_8:
- var ean8_Writer = new ZXing.BarcodeWriter();
- ean8_Writer.Format = BarcodeFormat.EAN_8;
- ean8_Writer.Options = options;
- bitmap = ean8_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.CODE_39:
- var code39_Writer = new ZXing.BarcodeWriter();
- code39_Writer.Format = BarcodeFormat.CODE_39;
- code39_Writer.Options = options;
- bitmap = code39_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.UPC_A:
- var upca_Writer = new ZXing.BarcodeWriter();
- upca_Writer.Format = BarcodeFormat.UPC_A;
- upca_Writer.Options = options;
- bitmap = upca_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.UPC_E:
- var upce_Writer = new ZXing.BarcodeWriter();
- upce_Writer.Format = BarcodeFormat.UPC_E;
- upce_Writer.Options = options;
- bitmap = upce_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.MSI:
- var msi_Writer = new ZXing.BarcodeWriter();
- msi_Writer.Format = BarcodeFormat.MSI;
- msi_Writer.Options = options;
- bitmap = msi_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.ITF:
- var itf_Writer = new ZXing.BarcodeWriter();
- itf_Writer.Format = BarcodeFormat.ITF;
- itf_Writer.Options = options;
- bitmap = itf_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.PLESSEY:
- var plessey_Writer = new ZXing.BarcodeWriter();
- plessey_Writer.Format = BarcodeFormat.PLESSEY;
- plessey_Writer.Options = options;
- bitmap = plessey_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- case BarcodeFormat.MAXICODE:
- var code_Writer = new ZXing.BarcodeWriter();
- code_Writer.Format = BarcodeFormat.MAXICODE;
- code_Writer.Options = options;
- bitmap = code_Writer.Write(tbxBarcodeValue.Text.Trim());
- BarCodeOptionsChanged?.Invoke(options, Format, bitmap);
- break;
- default:
- throw new Exception("条码格式暂不支持!");
- }
- #endregion
- }
- catch (Exception ex)
- {
- MessageBox.Show("编码生成错误:" + ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- finally
- {
- pbxBarcode.Image = bitmap;
- }
zxing .net 多种条码格式的生成的更多相关文章
- C# - VS2019调用ZXing.NET实现条码、二维码和带有Logo的二维码生成
前言 C# WinFrm程序调用ZXing.NET实现条码.二维码和带有Logo的二维码生成. ZXing.NET导入 GitHub开源库 ZXing.NET开源库githib下载地址:https:/ ...
- java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例
java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍 我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...
- ini格式数据生成与解析具体解释
ini格式数据生成与解析具体解释 1.ini格式数据长啥样? watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/ ...
- python 将png图片格式转换生成gif动画
先看知乎上面的一个连接 用Python写过哪些[脑洞大开]的小工具? https://www.zhihu.com/question/33646570/answer/157806339 这个哥们通过爬气 ...
- C# - VS2019 WinFrm程序调用ZXing.NET实现条码、二维码和带有Logo的二维码的识别
前言 C# WinFrm程序调用ZXing.NET实现条码.二维码和带有Logo的二维码的识别. ZXing.NET导入 GitHub开源库 ZXing.NET开源库githib下载地址:https: ...
- 2018-8-10-VisualStudio-2017-项目格式-自动生成版本号
title author date CreateTime categories VisualStudio 2017 项目格式 自动生成版本号 lindexi 2018-08-10 19:16:52 + ...
- Android zxing 解析二维码,生成二维码极简demo
zxing 官方的代码很多,看起来很费劲,此demo只抽取了有用的部分,实现了相机预览解码,解析本地二维码,生成二维码三个功能. 简化后的结构如下: 废话少说直接上代码: BaseDecodeHand ...
- 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)
public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...
- JAVA中通过时间格式来生成唯一的文件名
有时候我们需要截图,在要截图时,有人用到了时间格式,但是时间格式中的:在文件名称中是不被允许的字符,所以就会报错,如何生成唯一的时间文件名: package com.demo; import java ...
随机推荐
- Chromium与CEF的多进程模型及相关參数
CEF基于Chromium,也是多进程模型.关于进程模型.參考这里:https://www.chromium.org/developers/design-documents/process-model ...
- mac os x 触摸板点击无效
macbook默认轻击触摸板无效,这样是为了防止误点击.可是习惯了windows笔记本的我对这一设置非常不习惯. 能够在"system preference"的"Trac ...
- 轻松上云,从容实施Office 365项目
这个是我在MVP 社区活动的一节课程,讲述Office 365部署中一些大的挑战和解决的方法 视频URL 例如以下: http://edu.51cto.com/lesson/id-17440.html ...
- 转:java单例设计模式
本文转自:http://www.cnblogs.com/yinxiaoqiexuxing/p/5605338.html 单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton ...
- 将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹
如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹.Hibernate和Spring有时会将配置文件放置在src目录下,编译后 ...
- python_web----------数据可视化从0到1的过程
一.数据可视化项目配置 1. django + Echarts 2. 服务器(linux:Ubuntu 17.04 (GNU/Linux 4.10.0-40-generic x86_64)) 3. I ...
- 让intellij idea 14 支持ES6语法
用eclipse做前端开发,用到了webpack,结果各种依赖导致软件卡的一比,简直不能动!虽然在同事的帮忙下,修改了一下配置,但仍然卡的没脾气.改用intellij idea 14解决了卡的问题,但 ...
- Fragment多重嵌套实现电影,影院展示页
转载请标明出处: http://www.cnblogs.com/dingxiansen/p/8135888.html 本文出自:丁先森-博客园 公司以前的app是用H5封的,由于一个模块效果用H5实现 ...
- ASP.NET Core 一步步搭建个人网站(3)_菜单管理
上一章,我们实现了用户的注册和登录,登录之后展示的是我们的主页,页面的左侧是多级的导航菜单,定位并展示用户需要访问的不同页面.目前导航菜单是写死的,考虑以后菜单管理的便捷性,我们这节实现下可视化配置菜 ...
- iOS常见的几种加密方法(base64.MD5.Token传值.系统指纹验证。。加密)
普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 一. base64加密 base64 编码是现代密码学的基础 基本原理: 原本是 8个bit 一组 ...