当前位置: 首页 > news >正文

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

http://www.cnnetsun.cn/news/67805.html

相关文章:

  • 从传感器到图表:PHP实现农业数据实时可视化的5个关键步骤
  • 业务导向型技术日志首日记录(业务中使用的技术栈)
  • 基于SpringBoot + Vue的宠物殡葬网站设计
  • 基于Uniapp + SpringBoot + Vue的中医个性化养生系统的设计与实现
  • 亲测有效:打印机驱动程序无法使用的完整解决思路
  • ollama pull qwen:32b命令执行失败原因排查
  • 基于Uniapp + SpringBoot + Vue的高校就业招聘系统的设计与实现
  • Qwen3-32B适合哪些行业?金融、医疗、法律应用场景解析
  • 创业团队用 XinServer 提升项目交付效率实战
  • 交换机上各种接口
  • Google Vids:由AI驱动的工作视频创作 | ProductHunt 今日热榜 - 12月15日
  • 情感智能对话系统AI Agent:LLM驱动的深度交互
  • HDFS在大数据分析中的数据访问与处理优化
  • 自动驾驶—CARLA仿真(8)tutorial demo
  • 从被动响应到主动赋能:家具行业客服机器人的革新路径
  • AI辅助可再生能源发电预测:从气象数据到电力市场
  • 细节定成败!鹧鸪云让储能配置精准落地
  • 基于Qwen3-8B构建智能对话系统:从ollama下载到部署
  • 模块化公链的2025:动态分片、AI审计与量子安全的成本革命
  • 从Transformer模型详解到Seed-Coder-8B-Base的应用落地
  • 8、Qt 编程中的文件、流与 XML 处理
  • 9、Qt应用程序中的用户帮助功能实现
  • 17、Qt开发中的第三方工具、容器、类型与宏的综合解析
  • AutoGPT镜像升级路径规划:平滑迁移最新版本
  • 雷池 WAF vs React 高危漏洞:1 毫秒检测延迟,护住全栈业务安全
  • csp信奥赛C++标准模板库STL(3):list的使用详解
  • csp信奥赛C++标准模板库STL(2):deque的使用详解
  • LobeChat部署在Docker中遇到的问题及解决办法总结
  • AutoGPT在城市交通流量预测中的建模实验
  • AutoGPT镜像部署最佳实践:提升效率的关键一步