.NET 使用 ZXing.Net 生成二维码,并识别
.NET 使用 ZXing.Net 生成二维码,并识别
前言
前面已经分享给很多创建二维码,条形码。。。等一系列的方式
各有优缺点,暂时不做评价。今天推荐ZXing.Net 。也是比较全面的一种方式,还支持解码
编码
想要条形码,参考文章:.NET 使用 ZXing.Net 生成带有识别符的 EAN-13 条码
var qr = new QRCodeWriter() { }; // 创建一个QRCodeWriter实例用于生成QR Code
var render = new AlternateBitmapRenderer(); // 创建一个AlternateBitmapRenderer实例用于渲染条形码图像
var contents = "http://weixin.qq.com/r/qzj377TEKulVrfCM9225"; // 条形码的内容,需要根据实际情况进行设置
// 使用QRCodeWriter对象的encode方法生成QR Code的位矩阵,指定条形码格式为QR_CODE,大小为400x400
var qrbitmatrix = qr.encode(contents, ZXing.BarcodeFormat.QR_CODE, 400, 400);
// 使用AlternateBitmapRenderer对象的Render方法渲染条形码图像,指定条形码格式为EAN_13,内容为contents,
// 同时使用EncodingOptions设置图像的宽度为400,高度为400
var bitmap = render.Render(qrbitmatrix, ZXing.BarcodeFormat.QR_CODE, contents, new EncodingOptions { Width = 400, Height = 400 });
// 将生成的Bitmap对象保存为图片文件,文件名为"image.jpg",格式为JPEG
bitmap.Save("qr-image.jpg", ImageFormat.Jpeg);

解码
csharp代码
// create a barcode reader instance
IBarcodeReader reader = new BarcodeReader();
// 加载图片文件
Bitmap image = new Bitmap("D:\\PrideJoy\\Zxing.Demo\\Zxing.demo\\bin\\Debug\\net7.0\\qr-image.jpg");
// 获取rawRGB数据
Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);
System.Drawing.Imaging.BitmapData bmpData = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, image.PixelFormat);
IntPtr ptr = bmpData.Scan0;
int bytes = Math.Abs(bmpData.Stride) * image.Height;
byte[] rawRGB = new byte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, rawRGB, 0, bytes);
image.UnlockBits(bmpData);
// 获取格式(format)
RGBLuminanceSource.BitmapFormat format;
switch (image.PixelFormat)
{
case System.Drawing.Imaging.PixelFormat.Format8bppIndexed:
format = RGBLuminanceSource.BitmapFormat.Gray8;
break;
case System.Drawing.Imaging.PixelFormat.Format16bppGrayScale:
format = RGBLuminanceSource.BitmapFormat.Gray16;
break;
case System.Drawing.Imaging.PixelFormat.Format24bppRgb:
format = RGBLuminanceSource.BitmapFormat.RGB24;
break;
case System.Drawing.Imaging.PixelFormat.Format32bppRgb:
format = RGBLuminanceSource.BitmapFormat.RGB32;
break;
case System.Drawing.Imaging.PixelFormat.Format32bppArgb:
format = RGBLuminanceSource.BitmapFormat.ARGB32;
break;
// 其他格式的处理
default:
format = RGBLuminanceSource.BitmapFormat.Unknown;
break;
}
// 获取宽度(width)和高度(height)
int width = image.Width;
int height = image.Height;
var result = reader.Decode(rawRGB,width,height, format);
// do something with the result
if (result != null)
{
Console.WriteLine("内容为:"+result.Text);
}

条形码也是同样的方式

参考:
推荐阅读
- 开源项目MiniWord .NET Word-Word操作
- 博客系统必备-Moonglade Blog
- C#编写的一款电子桌面宠物-Candy
- ShellProgressBar控制台中漂亮的显示进度条
- 控制台必备神器-AnsiConsole
- WPFUI_直观的设计主题导航和新的沉浸式控件
- 一款的 WPF 主题和控件包,免费开源
- Net开源项目-一款电子邮件神奇
- NET 7 + Vue.js 的前后端分离的通用后台管理系统框架
欢迎关注我的公众号“Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节。

.NET 使用 ZXing.Net 生成二维码,并识别的更多相关文章
- C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)
1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...
- 基于Asp.Net Core,利用ZXing来生成二维码的一般流程
本文主要介绍如何在.net环境下,基于Asp.Net Core,利用ZXing来生成二维码的一般操作.对二维码工作原理了解,详情见:https://blog.csdn.net/weixin_36191 ...
- 【VB.NET】利用 ZXing.Net 生成二维码(支持自定义LOGO)
有任何疑问请去我的新博客提出 https://blog.clso.fun/posts/2019-03-03/vb-net-zxing-net-qr-maker.html ZXing .NET 的项目主 ...
- Java中使用google.zxing快捷生成二维码(附工具类源码)
移动互联网时代,基于手机端的各种活动扫码和收付款码层出不穷:那我们如何在Java中生成自己想要的二维码呢?下面就来讲讲在Java开发中使用 google.zxing 生成二维码. 一般情况下,Java ...
- 使用python调用zxing库生成二维码图片
(1) 安装Jpype 用python调用jar包须要安装jpype扩展,在Ubuntu上能够直接使用apt-get安装jpype扩展 $ sudo apt-get install pytho ...
- ZXing.dll 生成二维码 C# winform net4.5
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 利用Spring Boot+zxing,生成二维码还能这么简单
在网站开发中,经常会遇到要生成二维码的情况,比如要使用微信支付.网页登录等,本文分享一个Spring Boot生成二维码的例子,这里用到了google的zxing工具类. 本文目录 一.二维码简介二. ...
- C#MVC用ZXing.Net生成二维码/条形码
开篇:zxing.net是.net平台下编解条形码和二维码的工具. 首先创建新项目 选择MVC模板 添加一个控制器 在项目引用中的引用ZXing 进行联网下载 控制器需要引用 后台控制器 pu ...
- com.google.zxing:core 生成二维码的简单使用
String content = ""; int size = 240; Hashtable<EncodeHintType, String> hints = new H ...
- 高校手机签到系统——zxing.net生成二维码(补充)
高校手机签到系统——第一部分Authority权限系统(上) 高校手机签到系统——第一部分Authority权限系统(下) 高校手机签到系统——手机客户端 关于zxing.net的使用网上已有很多说明 ...
随机推荐
- Figma 学习笔记 – Image
参考: Figma Tutorial: Images 3 Ways to Insert Image 1. rectangle / frame + fill 画一个 rectangle / frame ...
- windbg配置问题汇总(记录)
.loadby sos.dll mscorwks.symfix c:\windows\symbols windbg配置问题汇总 1.Failed to find runtime DLL (clr.dl ...
- 一个 tomcat 下如何部署多个项目?附详细步骤
一个tomcat下如何部署多个项目?Linux跟windows系统下的步骤都差不多,以下linux系统下部署为例.windows系统下部署同理. 一.不修改端口,部署多个项目 清楚tomcat目录结构 ...
- MyBatis——案例——查询-单条件查询-动态条件查询
单条件查询-动态条件查询(choose(when,otherwise)) 从多个条件中选择一个 choose(when,otherwise) 选择,类似于java中的Switch语句(w ...
- 解锁Java线程池:实战技巧与陷阱规避
专业在线打字练习网站-巧手打字通,只输出有价值的知识. 一 前言 线程池作为初学者常感困惑的一个领域,本次"巧手打字通课堂"将深入剖析其中几个最为普遍的误区.为了更清晰地阐述这些知 ...
- PasteForm最佳CRUD实践,实际案例PasteTemplate详解之管理前端的代码(二)
之前的文章说了,使用反射和ABPvNext的Dto实现用后端控制前端以实现最佳CRUD实践! 相信看过一的已经了解了这个PasteForm是如何实现的了,本文来看下具体如何实现的 表格页面的实现 打开 ...
- uart loglevel和pr_debug的区别
pr_debug 是 Linux 内核中用于打印调试信息的宏,它的行为会根据编译时的配置有所不同.如果定义了 CONFIG_DYNAMIC_DEBUG 配置选项,pr_debug 会扩展为 dynam ...
- eBPF 概述:第 4 部分:在嵌入式系统运行
1. 前言 在本系列的第 1 部分和第 2 部分,我们介绍了 eBPF 虚拟机内部工作原理,在第 3 部分我们研究了基于底层虚拟机机制之上开发和使用 eBPF 程序的主流方式. 在这一部分中,我们将从 ...
- Makefile优化编译速度
并行编译:使用 make -j 命令来进行并行编译,可以加快编译速度.-j 后面可以跟一个数字,表示并行编译的线程数. 懒惰计算:使用 .PHONY 规则来避免无谓的重新编译.该规则告诉 make,这 ...
- ADO.NET 和 ORM的区别
ADO: 1 大量的Sql语句-业务不同,Sql语句不同 2 需要根据不同的场景编写不同Sql语句-灵活去编写Sql语句-提前优化Sql 语句-提供高性能的Sql语句 3 不适合快速开发 4 可编程性 ...