利用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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM