C# 使用ZXing.Net生成二维码和条码

写在前面

条码生成是一个经常需要处理的功能,本文介绍一个条码处理类库,ZXing用Java实现的多种格式的一维二维条码图像处理库,而ZXing.Net是其.Net版本的实现。

在WinForm下使用该类库需要从NuGet安装两个组件:

ZXing.Net

ZXing.Net.Bindings.Windows.Compatibility

代码实现

using ZXing;
using ZXing.Common;
using ZXing.OneD;
using ZXing.QrCode;
using ZXing.Windows.Compatibility;namespace QrCodeGen
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){var writer = new BarcodeWriter<Bitmap>();writer.Format = BarcodeFormat.QR_CODE;QrCodeEncodingOptions options = new QrCodeEncodingOptions(){DisableECI = true,       //设置内容编码CharacterSet = "UTF-8",  //设置二维码的宽度和高度Width = 200,Height = 200,Margin = 1               //设置二维码的边距,单位不是固定像素};var render = new AlternateBitmapRenderer();writer.Renderer = render;writer.Options = options;Bitmap map = writer.Write("Hello world");pictureBox1.Image = map;}private void button2_Click(object sender, EventArgs e){var w = new EAN13Writer();var render = new AlternateBitmapRenderer();render.TextFont = new Font("Segoe UI", 25);var content = "1234567890123";// EAN-13 商品条码的标准尺寸是 37.29mm x 26.26 mm ,按照 300 DPI 换算像素大小是 440 x 310var m = w.encode(content, BarcodeFormat.EAN_13, 440, 310);//渲染得到的图片var bmp = render.Render(m, BarcodeFormat.EAN_13, content, new EncodingOptions { Width = 440, Height = 310 });pictureBox2.Image = bmp;}}
}

 EAN-13商品条码是表示EAN/UCC-13商品标识代码的条码符号,由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符、终止符、右侧空白区及供人识别字符组成。

调用示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/308411.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PPT录制视频的方法,轻松提升演示效果!

在现代工作和学习中&#xff0c;ppt是一种常见的演示工具&#xff0c;而将ppt转化为视频形式更能方便分享和传播。本文将介绍两种ppt录制视频的方法&#xff0c;每一种方法都将有详细的步骤和简要的介绍&#xff0c;通过这些方法&#xff0c;你可以轻松将ppt制作成视频&#xf…

CSS 缩减中心动画

<template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container" mou…

OCP NVME SSD规范解读-4.NVMe IO命令-1

针对NVMe-IO-1到NVMe-IO-14的解读如下&#xff1a; NVMe-IO-1&#xff1a; 设备应支持所有必需的NVMe I/O命令。这是设备能够进行基本数据读写操作的基础要求。NVMe I/O命令包括读、写、删除、擦除等操作&#xff0c;这些是存储设备的核心功能。 NVMe-IO-2&#xff1a; 设备应…

基于STM32的光电传感器应用开发实例

基于STM32的光电传感器应用开发是一种常见的嵌入式系统应用&#xff0c;光电传感器可以用于检测物体的有无、位置、颜色、亮度等信息&#xff0c;被广泛应用于工业自动化、机器人技术、智能家居等领域。本文将介绍如何在STM32上进行光电传感器应用开发&#xff0c;并提供相应的…

Linux之定时任务调度

crond crond是Linux系统中的一个守护进程&#xff0c;主要用于周期性地执行某种任务或等待处理某些事件。而crondtab是配套的工作&#xff0c;用于定时任务的设置。 语法 crontab [选项]常用选项 入门案例 执行crontab -e命令输入任务到调度文件中 */1 * * * * ls -l /et…

RIP路由协议配置实验

实验目的&#xff1a; &#xff08;1&#xff09;理解RIP路由的原理&#xff1b; &#xff08;2&#xff09;掌握RIP路由的配置方法 实验器材&#xff1a; Cisco packet 实验内容&#xff1a; 实验步骤&#xff1a; &#xff08;1&#xff09;布置拓扑&#xff1a; &…

Go语言学习第二天

Go语言数组详解 var 数组变量名 [元素数量]Type 数组变量名&#xff1a;数组声明及使用时的变量名。 元素数量&#xff1a;数组的元素数量&#xff0c;可以是一个表达式&#xff0c;但最终通过编译期计算的结果必须是整型数值&#xff0c;元素数量不能含有到运行时才能确认大小…

Elasticsearch:升级索引以使用 ELSER 最新的模型

在此 notebook 中&#xff0c;我们将看到有关如何使用 Reindex API 将索引升级到 ELSER 模型 .elser_model_2 的示例。 注意&#xff1a;或者&#xff0c;你也可以通过 update_by_query 来更新索引以使用 ELSER。 在本笔记本中&#xff0c;我们将看到使用 Reindex API 的示例。…

flutter 之proto

和嵌入式用proto协议来通信&#xff0c;以mac来演示 先在电脑上安装protobuf&#xff08;在博主文章内容里面搜Mac安装protobuf&#xff09;&#xff0c;然后在桌面上放这几个文件&#xff0c;且build_proto_dart.sh文件内容如图所示 #!/bin/bashSCRIPT$(readlink -f "$0…

vue3+ts+vite自定义组件上传npm流程

1. 创建项目 npm create vite 这里踩坑点&#xff1a; 运行vite生成的vue项目时报错“SyntaxError: Unexpected token ?? at “ 是因为node版本过低 电脑为windows11系统&#xff0c;我当时使用的版本node版本是14.21.3&#xff0c;如下图&#xff0c;后边安装了nvm版本…

CEC2017(Python):五种算法(PSO、RFO、SSA、DE、HHO)求解CEC2017

一、5种算法简介 1、粒子群优化算法PSO 2、红狐优化算法RFO 3、麻雀搜索算法SSA 4、差分进化算法DE 5、哈里斯鹰优化算法HHO 二、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem de…

为什么引入偏向锁、轻量级锁,介绍下升级流程 Synchronized 引入了锁升级的机制之后,如果有线程去竞争锁:

文章目录 为什么引入偏向锁、轻量级锁&#xff0c;介绍下升级流程Synchronized 引入了锁升级的机制之后&#xff0c;如果有线程去竞争锁&#xff1a; 今天我们来谈谈一个有意思的问题&#xff0c;开始。。。。 为什么引入偏向锁、轻量级锁&#xff0c;介绍下升级流程 Synchroni…