.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);
}



条形码也是同样的方式

参考:

推荐阅读

欢迎关注我的公众号“Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节。

.NET 使用 ZXing.Net 生成二维码,并识别的更多相关文章

  1. C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)

    1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...

  2. 基于Asp.Net Core,利用ZXing来生成二维码的一般流程

    本文主要介绍如何在.net环境下,基于Asp.Net Core,利用ZXing来生成二维码的一般操作.对二维码工作原理了解,详情见:https://blog.csdn.net/weixin_36191 ...

  3. 【VB.NET】利用 ZXing.Net 生成二维码(支持自定义LOGO)

    有任何疑问请去我的新博客提出 https://blog.clso.fun/posts/2019-03-03/vb-net-zxing-net-qr-maker.html ZXing .NET 的项目主 ...

  4. Java中使用google.zxing快捷生成二维码(附工具类源码)

    移动互联网时代,基于手机端的各种活动扫码和收付款码层出不穷:那我们如何在Java中生成自己想要的二维码呢?下面就来讲讲在Java开发中使用 google.zxing 生成二维码. 一般情况下,Java ...

  5. 使用python调用zxing库生成二维码图片

    (1)     安装Jpype 用python调用jar包须要安装jpype扩展,在Ubuntu上能够直接使用apt-get安装jpype扩展 $ sudo apt-get install pytho ...

  6. ZXing.dll 生成二维码 C# winform net4.5

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. 利用Spring Boot+zxing,生成二维码还能这么简单

    在网站开发中,经常会遇到要生成二维码的情况,比如要使用微信支付.网页登录等,本文分享一个Spring Boot生成二维码的例子,这里用到了google的zxing工具类. 本文目录 一.二维码简介二. ...

  8. C#MVC用ZXing.Net生成二维码/条形码

    开篇:zxing.net是.net平台下编解条形码和二维码的工具. 首先创建新项目 选择MVC模板  添加一个控制器  在项目引用中的引用ZXing 进行联网下载 控制器需要引用 后台控制器   pu ...

  9. com.google.zxing:core 生成二维码的简单使用

    String content = ""; int size = 240; Hashtable<EncodeHintType, String> hints = new H ...

  10. 高校手机签到系统——zxing.net生成二维码(补充)

    高校手机签到系统——第一部分Authority权限系统(上) 高校手机签到系统——第一部分Authority权限系统(下) 高校手机签到系统——手机客户端 关于zxing.net的使用网上已有很多说明 ...

随机推荐

  1. shell脚本参数读取列表文件,循环执行时,要注意这个列表文件转换成 unix 格式

    当报一些很奇怪的错,比如报错多了一个空格,但 vim 看打开没有,比如: 或者肉眼看上去路径正常,但却报路径不存在: 这种时候要使用 dos2unix 工具,把这个列表文件转换一下:

  2. Codeforces Round 973 (Div. 2) D

    性质1:题目操作相当于将前面的数搬到了后面,将其视为柱状图,则是把前面柱的高度转移至后面柱的高度 性质2:最后移成的序列以单调不下降序列为最优,易证明当存在下降时,可通过操作使答案更优或不变差 性质3 ...

  3. USB总线-Linux内核USB3.0主机控制器驱动初始化流程分析(十三)

    1.概述 RK3588有2个USB3.0 DRD控制器,2个USB2.0 Host控制器.USB3.0 DRD控制器既可以做Host,也可以做Device,向下兼容USB2.0和USB1.0.USB3 ...

  4. 墨天轮沙龙 | SphereEx代野:Apache ShardingSphere-从中间件到分布式生态演进之路

    在9月22日举办的[墨天轮数据库沙龙第十期-国产中间件专场]中,SphereEx 解决方案专家 代野分享了Apache ShardingSphere:从中间件到分布式生态演进之路>主题演讲,本文 ...

  5. 41.key发生变化,dom还会复用吗

    会复用但是可能会产生没有必要的真实DOM更新  ,会降低渲染效率 :比如使用 index 作为 key 值 :

  6. kali Linux及mac os 破解WiFi

    wpa-dictionary 用于 Wi-Fi 密码破解. Linux 篇(推荐) 1. 安装 aircrack-ng 使用相应包管理工具安装,例如 Debian/Ubuntu 使用 apt 安装: ...

  7. AI五子棋_08 五子棋落子规则对应的价值

    AI五子棋 第八步 恭喜你到达第八步! 利用前一步得到的棋型分析结果,考察每一个可能落子的位置,给每一个可能的位置打分,将棋子落在分数最高的位置上.根据经验,我们可以总结出下面的落子规则: 1. 致胜 ...

  8. 工作中的技术总结_JQuery_20210825

    工作中的技术总结_JQuery_20210825 JQuery此前接触不多,所以先把此次接触的一些基本操作 1.DOM节点的取值或者赋值: 语法: $(selector).val(value) 参数 ...

  9. 基于HarmonyOS NEXT 5.0自定义增强版导航栏组件|鸿蒙ArkUI自定义标题栏

    这段时间比较热门的莫过于华为推出的自主研发的面向全场景分布式操作系统HarmonyOS. https://developer.huawei.com/ 最新一直潜心学习鸿蒙os开发,于是基于Harmon ...

  10. 【Python】公众号聚合登录软件+源码

    废话不多说了,直接上图,回复拿软件和源码[自己打包,配置环境比较复杂] 写这个软件就是因为其他平台的会员太贵了,还不如自己写个,不限制账号登录数~ 授权,打开和删除功能都是正常的, 面板功能,我打算做 ...