C#使用QRCoder.dll生成二维码

1、项目添加QRCoder.dll的引用

使用NuGet添加该引用步骤:右键点击项目的,引用 —> 管理NuGet程序包 —> 在搜索框中输入:QRCoder —> 安装。

2、创建二维码公共处理类(QRCoderHelper.cs)

using System;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using QRCoder;

/// <summary>
/// 二维码公共处理类
/// </summary>
public static class QRCoderHelper
{
    /// <summary>
    /// 创建二维码返回文件路径名称
    /// </summary>
    /// <param name="plainText">二维码内容</param>
    public static string CreateQRCodeToFile(string plainText)
    {
        try
        {
            string fileName = "";
            if (String.IsNullOrEmpty(plainText))
            {
                return "";
            }

            //二维码文件目录
            string filePath = @"F:\Images\QR\";
            if (!Directory.Exists(filePath))
            {
                Directory.CreateDirectory(filePath);
            }

            //创建二维码文件路径名称
            fileName = filePath + DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100, 1000) + ".jpeg";

            QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
            //QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
            QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
            QRCode qrcode = new QRCode(qrCodeData);
            Bitmap qrCodeImage = qrcode.GetGraphic(15);
            qrCodeImage.Save(fileName, ImageFormat.Jpeg);
            return fileName;
        }
        catch(Exception ex)
        {
            throw new Exception("创建二维码返回文件路径名称方法异常", ex);
        }
    }

    /// <summary>
    /// 创建二维码返回byte数组
    /// </summary>
    /// <param name="plainText">二维码内容</param>
    public static byte[] CreateQRCodeToBytes(string plainText)
    {
        try
        {
            if (String.IsNullOrEmpty(plainText))
            {
                return null;
            }

            QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
            //QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
            QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
            QRCode qrcode = new QRCode(qrCodeData);
            Bitmap qrCodeImage = qrcode.GetGraphic(15);
            MemoryStream ms = new MemoryStream();
            qrCodeImage.Save(ms, ImageFormat.Jpeg);
            byte[] arr = new byte[ms.Length];
            ms.Position = 0;
            ms.Read(arr, 0, (int)ms.Length);
            ms.Close();

            return arr;
        }
        catch(Exception ex)
        {
            throw new Exception("创建二维码返回byte数组方法异常", ex);
        }
    }

    /// <summary>
    /// 创建二维码返回Base64字符串
    /// </summary>
    /// <param name="plainText">二维码内容</param>
    public static string CreateQRCodeToBase64(string plainText,bool hasEdify = true)
    {
        try
        {
            string result = "";
            if (String.IsNullOrEmpty(plainText))
            {
                return "";
            }

            QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
            //QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
            QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
            QRCode qrcode = new QRCode(qrCodeData);
            Bitmap qrCodeImage = qrcode.GetGraphic(15);
            MemoryStream ms = new MemoryStream();
            qrCodeImage.Save(ms, ImageFormat.Jpeg);
            byte[] arr = new byte[ms.Length];
            ms.Position = 0;
            ms.Read(arr, 0, (int)ms.Length);
            ms.Close();
            if (hasEdify)
            {
                result = "data:image/jpeg;base64," + Convert.ToBase64String(arr);
            }
            else
            {
                result = Convert.ToBase64String(arr);
            }
            return result;
        }
        catch (Exception ex)
        {
            throw new Exception("创建二维码返回Base64字符串方法异常", ex);
        }
    }
}

3、测试

public static void QRCoderTest()
{
    //二维码内容
    string plainText = "https://blog.csdn.net/pan_junbiao/article/details/82956799";

    //创建二维码返回文件路径名称
    string fileName = QRCoderHelper.CreateQRCodeToFile(plainText);
}

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值