news 2026/1/3 9:28:51

用C#和ZXing打造码生成与识别利器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用C#和ZXing打造码生成与识别利器

使用C#语言基于ZXing开发的码生成/识别软件

在当今数字化时代,二维码、条形码等各种码的应用无处不在。今天咱就来聊聊怎么用C#语言搭配ZXing库开发一款码生成与识别的软件,这过程可有趣啦!

准备工作

首先得在项目里引入ZXing库。咱可以通过NuGet包管理器来搞定,打开“程序包管理器控制台”,敲入以下命令:

Install-Package ZXing.Net

这就把ZXing.Net这个包给装上了,它可是咱开发的得力助手。

生成码

生成码的过程其实不难。咱先来看生成二维码的代码示例:

using ZXing; using ZXing.QrCode; using System.Drawing; class Program { static void Main() { string content = "https://www.example.com";// 要编码到二维码里的内容 BarcodeWriter writer = new BarcodeWriter { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions { Height = 300, Width = 300 } }; Bitmap result = writer.Write(content); result.Save("qrcode.png"); } }

这段代码里,咱先定义了要编码到二维码里的内容content,这里是一个网址。然后创建了一个BarcodeWriter对象,指定它生成的格式是QR_CODE,也就是二维码啦。还设置了二维码图片的高度和宽度为300像素。接着调用Write方法把内容写进二维码,最后把生成的二维码以图片的形式保存下来,名字叫qrcode.png

要是想生成条形码,代码也类似,只需要改改格式就行:

using ZXing; using ZXing.Common; using System.Drawing; class Program { static void Main() { string content = "123456789012";// 条形码内容 BarcodeWriter writer = new BarcodeWriter { Format = BarcodeFormat.CODE_128, Options = new EncodingOptions { Height = 100, Width = 300 } }; Bitmap result = writer.Write(content); result.Save("barcode.png"); } }

这里把格式改成了CODE_128,这是一种常见的条形码格式,然后设置下合适的高度和宽度,就生成条形码图片barcode.png了。

识别码

识别码同样很有意思。下面是识别二维码和条形码的代码:

using ZXing; using ZXing.Common; using System.Drawing; class Program { static void Main() { string filePath = "qrcode.png";// 要识别的图片路径 var bitmap = new Bitmap(filePath); var reader = new BarcodeReader(); var result = reader.Decode(new BitmapLuminanceSource(bitmap)); if (result!= null) { Console.WriteLine("识别结果: " + result.Text); } else { Console.WriteLine("未识别到有效码"); } } }

这段代码里,先指定了要识别的图片路径filePath,这里假设是之前生成的qrcode.png。接着创建一个Bitmap对象加载图片,再创建一个BarcodeReader对象来做识别工作。调用Decode方法传入图片的亮度源BitmapLuminanceSource,如果识别成功,result就会有值,咱把识别出来的文本打印出来;要是没识别到,就提示“未识别到有效码”。

用C#结合ZXing开发码生成与识别软件是不是还挺酷的?无论是用于开发工具类软件,还是集成到大型项目里,这个技能都超实用,大家不妨动手试试,说不定还能发现更多有趣的应用场景呢!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/15 19:11:38

UDP网络巩固知识基础题(5)

1. UDP协议在物联网(IoT)应用中的优势和实现要点? 答案: UDP在IoT环境中具有天然优势: 主要优势: 资源消耗低: 协议简单,内存和CPU占用少 功耗低: 无连接维护,减少无线电活动时间 实时性好: 适合传感器数据的及时上报 开销小: 适合传输小量数据 实现要点: 协议设…

作者头像 李华
网站建设 2025/12/15 19:10:51

Laravel 13多模态验证规则深度解析(前所未见的灵活验证方案)

第一章:Laravel 13多模态验证规则概述Laravel 13 引入了多模态验证规则系统,显著增强了表单请求和数据校验的灵活性与表达能力。该机制允许开发者在一个验证规则中组合多种条件模式,如基于请求方法、输入来源或上下文环境动态切换验证逻辑&am…

作者头像 李华
网站建设 2025/12/17 8:27:49

多模态缓存清理全解析,Laravel 13开发者必须掌握的3种高阶技巧

第一章:多模态缓存清理的核心概念与Laravel 13演进在现代Web应用开发中,缓存机制已成为提升系统性能的关键手段。随着Laravel 13的发布,框架对多模态缓存管理进行了深度优化,支持同时操作多种缓存后端(如Redis、Memcac…

作者头像 李华
网站建设 2025/12/15 19:10:03

6G真的要来了?中国移动这次把“未来网络”摆到了台前

很多人对6G的印象,可能还停留在“5G都没用明白,6G是不是太早了”。但在12月中旬的中国信息通信大会上,中国移动把答案摆得很直白——不是概念图,也不是口号,而是一份白皮书,加上一台已经能跑起来的原型样机…

作者头像 李华
网站建设 2025/12/15 19:10:00

黄金成色怎么看?新手第一次买金,别只盯着“亮不亮”

第一次买黄金的人,十有八九都会被一个问题绊住:这金子,到底纯不纯?我身边就有朋友,拿着一条“看起来很黄”的项链反复端详,最后还是不放心地问柜员一句:“这是足金吗?”其实&#xf…

作者头像 李华