首页 > 其他分享 >维码生成和解析用ZXing.NET

维码生成和解析用ZXing.NET

时间:2023-11-20 10:22:54浏览次数:30  
标签:解码 System ZXing 二维码 qrCodeBitmap using NET 维码

ZXing.NET 是一个开源的、功能强大的二维码处理库,它能够对二维码进行解码(读取信息)和编码(生成二维码)。ZXing 是 "Zebra Crossing" 的缩写,是一个跨平台的、用于解码和生成条形码和二维码的库。以下是一些 ZXing.Net 的主要功能通过实例讲解。

1. 生成二维码

using System;
using System.Drawing;
using ZXing;
using ZXing.QrCode;

class Program
{
    static void Main()
    {
        // 创建 QR Code 编码器实例
        var writer = new BarcodeWriter();
        writer.Format = BarcodeFormat.QR_CODE;

        // 设置二维码内容
        string content = "Hello, ZXing.Net!";

        // 生成二维码图片
        Bitmap qrCodeBitmap = writer.Write(content);

        // 保存生成的二维码图片(这里假设保存路径为 "qrcode.png")
        qrCodeBitmap.Save("qrcode.png");

        Console.WriteLine("已生成二维码.");
    }
}

2. 解码二维码

using System;
using System.Drawing;
using ZXing;

class Program
{
    static void Main()
    {
        // 创建二维码解码器实例
        var reader = new BarcodeReader();

        // 读取二维码图片(这里假设图片路径为 "qrcode.png")
        Bitmap qrCodeBitmap = (Bitmap)Bitmap.FromFile("qrcode.png");

        // 解码二维码
        var result = reader.Decode(qrCodeBitmap);

        // 输出解码结果
        if (result != null)
        {
            Console.WriteLine($"解码结果: {result.Text}");
        }
        else
        {
            Console.WriteLine("无法解码二维码.");
        }
    }
}

3. 自定义二维码样式

using System;
using System.Drawing;
using ZXing;
using ZXing.QrCode;
using ZXing.Rendering;

class Program
{
    static void Main()
    {
        // 创建 QR Code 编码器实例
        var writer = new BarcodeWriter();
        writer.Format = BarcodeFormat.QR_CODE;

        // 设置二维码内容
        string content = "Custom Style";

        // 设置自定义样式
        var renderer = new BitmapRenderer();
        renderer.Background = Color.Yellow;
        renderer.Foreground = Color.DarkBlue;
        writer.Renderer = renderer;

        // 生成二维码图片
        Bitmap qrCodeBitmap = writer.Write(content);

        // 保存生成的二维码图片(这里假设保存路径为 "custom_style_qrcode.png")
        qrCodeBitmap.Save("custom_style_qrcode.png");

        Console.WriteLine("已生成带有自定义样式的二维码.");
    }
} 

4. 解码带有Logo的二维码

using System;
using System.Drawing;
using ZXing;
using ZXing.Common;

class Program
{
    static void Main()
    {
        // 创建二维码解码器实例
        var reader = new BarcodeReader();

        // 读取带有Logo的二维码图片(这里假设图片路径为 "qrcode_with_logo.png")
        Bitmap qrCodeBitmap = (Bitmap)Bitmap.FromFile("qrcode_with_logo.png");

        // 解码二维码
        var result = reader.Decode(qrCodeBitmap);

        // 输出解码结果
        if (result != null)
        {
            Console.WriteLine($"解码结果: {result.Text}");
        }
        else
        {
            Console.WriteLine("无法解码二维码.");
        }
    }
}

  

标签:解码,System,ZXing,二维码,qrCodeBitmap,using,NET,维码
From: https://www.cnblogs.com/daboluo/p/17843359.html

相关文章

  • Kubernetes Gateway API 攻略:解锁集群流量服务新维度!
    KubernetesGatewayAPI刚刚GA,旨在改进将集群服务暴露给外部的过程。这其中包括一套更标准、更强大的API资源,用于管理已暴露的服务。在这篇文章中,我将介绍GatewayAPI资源,并以Istio为例来展示这些资源是如何关联的。通过这个示例,你将了解GatewayAPI的各个组成部分如何配......
  • 神经网络入门篇:神经网络的梯度下降(Gradient descent for neural networks)
    神经网络的梯度下降在这篇博客中,讲的是实现反向传播或者说梯度下降算法的方程组单隐层神经网络会有\(W^{[1]}\),\(b^{[1]}\),\(W^{[2]}\),\(b^{[2]}\)这些参数,还有个\(n_x\)表示输入特征的个数,\(n^{[1]}\)表示隐藏单元个数,\(n^{[2]}\)表示输出单元个数。在这个例子中,只介绍过的......
  • Netty源码学习4——服务端是处理新连接的&netty的reactor模式
    系列文章目录和关于我零丶引入在前面的源码学习中,梳理了服务端的启动,以及NioEventLoop事件循环的工作流程,并了解了Netty处理网络io重要的Channel,ChannelHandler,ChannelPipeline。这一篇将学习服务端是如何构建新的连接。一丶网络包接收流程当客户端发送的网络数据帧通过网......
  • .NET8.0 AOT 经验分享 - 专项测试各大 ORM 是否支持
    AOT特点发布和部署本机AOT应用具有以下优势:最大程度减少磁盘占用空间:使用本机AOT发布时,将生成一个可执行文件,其中仅包含支持程序所需的外部依赖项的代码。减小的可执行文件大小可能会导致:较小的容器映像,例如在容器化部署方案中。缩短了较小映像的部署时间。缩短启动......
  • Qt中使用QNetworkAccessManager类发送https请求时状态码返回0
    前言在项目开发中,碰到一个问题,使用QNetworkAccessManager类对象发送https请求时,状态码一直返回0,抓包分析看请求响应也是正常的。费了好大劲终于搞定了,主要是两个原因导致的。原因一:未设置支持SSL/TLS协议默认是不支持https协议的,需要在代码中手动设置下QNetworkRequestreqDown......
  • kubernetes container device interface (CDI)
    CDI是什么?ContainerDeviceInterface(CDI)是一个提议的标准,它定义了如何在容器运行时环境中向容器提供设备。这个提议的目的是使得设备供应商能够更容易地将其设备集成到Kubernetes集群中,而不必修改Kubernetes核心代码。CDI插件通常负责:配置设备以供容器使用(例如,分配......
  • ASP.NET MD5与哈希加密
    ......
  • Jenkins+.net Care7+GitLab+docker desktop 实现自动化部署(完结)
    1.上一篇文章大家各种环境搭建好了之后2.创建一个仓库开启远程访问权限3.开启gitlab允许对本地网络发送请求这个主要为webhook做准备的,否则gitlab不允许项目添加本地网络的webhook以管理员身份登录gitlab 4.没有这个的话得下载插件可以去   下载这几个插件就可以......
  • Jenkins+.net Care7+GitLab+docker desktop 实现自动化部署(1)
    1.首先在电脑上安装jenkins+java17这个不做过多讲解网上教程都有2在docker安装GitLab查看版本dockersearchgitlab拉取指定版本:dockerpulltwang2218/gitlab-ce-zhdockerrun-d#后台运行,全称:detach-p8443:443#将容器内部端口向外映射......
  • visual studio2022中如何添加另外新下载的框架Net.framework4.8.1 ?
    visualstudio2022中如何添加另外新下载的框架Net.framework4.8.1?作者:张晓栋链接:https://www.zhihu.com/question/577090786/answer/2832018198来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。不要自己去下载,需要通过VisualStudioInstaller安......