.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. CSS & JS Effect – Textarea Autoresize

    前言 这是一个很普遍的体验, 而且实现起来也很简单哦 参考 YouTube – How to Auto Resize Textarea using HTML CSS & JavaScript ...

  2. VMware Vsphere 8.0 ESXI 主机部署

    一. VMware vSphere 8.0新特性 VMware vSphere 8.0是一个全新的版本,引入了许多新功能,其中最主要的新功能包括 1.集中式云控制台 使 IT 管理员能够借助 vSph ...

  3. 画布canvas基础 01

    1. 什么是canvas canvas是用来绘制图形的.它可以用于动画.游戏画面.数据可视化.图片编辑以及实时视频处理等方面. <canvas width="500" hei ...

  4. 云原生爱好者周刊:KubeKey v2.1.0 alpha 版发布!

    KubeKey v2.1.0-alpha.0 发布啦!该版本的主要特性: 支持三种使用场景的 Etcd 集群(二进制部署,Kubeadm 部署,连接外置已存在的 Etcd 集群). 支持部署 Cont ...

  5. 云原生周刊:K8s 在 v1.27 中移除的特性和主要变更

    文章推荐 K8s 在 v1.27 中移除的特性和主要变更 随着 Kubernetes 发展和成熟,为了此项目的整体健康,某些特性可能会被弃用.移除或替换为优化过的特性.基于目前在 v1.27 发布流程 ...

  6. md转换成_post下直接使用的文件

    md转换成_post下直接使用的文件 package org.example; import java.io.File; import java.io.IOException; import java ...

  7. OGRE 渲染引擎 Windows 平台构建及编译

    0 OGRE 机器人领域常见的Rviz和Gazebo可视化的渲染后端. 1 无数的坑 这东西真的可恶,官方教程文档以及项目构建的方式是真的繁琐,在Windows上. CMake 的构建必须要使用 CM ...

  8. Go语言基础07 _interface _1

    Go语言基础07 _interface _1 与其他主要编程语⾔的差异 接⼝为⾮⼊侵性,实现不依赖于借⼝定义 所以接⼝的定义可以包含在接⼝使⽤者包内 package interface_test im ...

  9. 3.21 Linux PATH环境变量及作用(初学者必读)

    在讲解 PATH 环境变量之前,首先介绍一下 which 命令,它用于查找某个命令所在的绝对路径.例如: [root@localhost ~]# which rm /bin/rm [root@loca ...

  10. kubernetes组件大全

    master节点组件 控制平面的组件我们会找一台单独的机器来部署,我们习惯上把部署控制平面组件的机器称为master节点,以下都会用master节点来代替控制平面这个概念,master节点的组件能够对 ...