zoukankan      html  css  js  c++  java
  • 利用QRCoder生成二维码

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

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

      /// <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 = Path.Combine("C:\","Down\");
                    if (!Directory.Exists(filePath))
                    {
                        Directory.CreateDirectory(filePath);
                    }
    
                    //创建二维码文件路径名称
                    fileName = filePath + DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100, 1000) + ".jpeg";
    
                    QRCodeGenerator qrGenerator = new 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);
                }
            }
        }
    

    调用

                //二维码内容
                string plainText = "https://i.cnblogs.com/EditPosts.aspx?opt=1";
    
                //创建二维码返回文件路径名称
                string fileName = QRCoderHelper.CreateQRCodeToFile(plainText);
  • 相关阅读:
    re模块
    Docker的使用
    flask中请求勾子
    flask中的蓝图实现模块化的应用
    HTTP中常见的各种状态码详解及解决方案
    git快速入门
    2st week blog 1
    web个人介绍
    CentOS7下shell脚本实现限定范围类的随机数
    CentOS7下shell脚本大小比较
  • 原文地址:https://www.cnblogs.com/macT/p/11395142.html
Copyright © 2011-2022 走看看