IT部落

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 24|回復: 0

利用QRCoder生成二维码

[複製鏈接]

6

主題

7

帖子

24

積分

新手进村

Rank: 1

積分
24
發表於 2022-7-6 10:20:11 | 顯示全部樓層 |閱讀模式
NUGET安装QRCoder,
然后
  1. /// <summary>
  2.     /// 二维码公共处理类
  3.     /// </summary>
  4.     public static class QRCoderHelper
  5.     {
  6.         /// <summary>
  7.         /// 创建二维码返回文件路径名称
  8.         /// </summary>
  9.         /// <param name="plainText">二维码内容</param>
  10.         public static string CreateQRCodeToFile(string plainText)
  11.         {
  12.             try
  13.             {
  14.                 string fileName = "";
  15.                 if (String.IsNullOrEmpty(plainText))
  16.                 {
  17.                     return "";
  18.                 }

  19.                 //二维码文件目录
  20.                 string filePath = Path.Combine("C:\","Down\");
  21.                 if (!Directory.Exists(filePath))
  22.                 {
  23.                     Directory.CreateDirectory(filePath);
  24.                 }

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

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

  40.         /// <summary>
  41.         /// 创建二维码返回byte数组
  42.         /// </summary>
  43.         /// <param name="plainText">二维码内容</param>
  44.         public static byte[] CreateQRCodeToBytes(string plainText)
  45.         {
  46.             try
  47.             {
  48.                 if (String.IsNullOrEmpty(plainText))
  49.                 {
  50.                     return null;
  51.                 }

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

  63.                 return arr;
  64.             }
  65.             catch (Exception ex)
  66.             {
  67.                 throw new Exception("创建二维码返回byte数组方法异常", ex);
  68.             }
  69.         }

  70.         /// <summary>
  71.         /// 创建二维码返回Base64字符串
  72.         /// </summary>
  73.         /// <param name="plainText">二维码内容</param>
  74.         public static string CreateQRCodeToBase64(string plainText, bool hasEdify = true)
  75.         {
  76.             try
  77.             {
  78.                 string result = "";
  79.                 if (String.IsNullOrEmpty(plainText))
  80.                 {
  81.                     return "";
  82.                 }

  83.                 QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
  84.                 //QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
  85.                 QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
  86.                 QRCode qrcode = new QRCode(qrCodeData);
  87.                 Bitmap qrCodeImage = qrcode.GetGraphic(15);
  88.                 MemoryStream ms = new MemoryStream();
  89.                 qrCodeImage.Save(ms, ImageFormat.Jpeg);
  90.                 byte[] arr = new byte[ms.Length];
  91.                 ms.Position = 0;
  92.                 ms.Read(arr, 0, (int)ms.Length);
  93.                 ms.Close();
  94.                 if (hasEdify)
  95.                 {
  96.                     result = "data:image/jpeg;base64," + Convert.ToBase64String(arr);
  97.                 }
  98.                 else
  99.                 {
  100.                     result = Convert.ToBase64String(arr);
  101.                 }
  102.                 return result;
  103.             }
  104.             catch (Exception ex)
  105.             {
  106.                 throw new Exception("创建二维码返回Base64字符串方法异常", ex);
  107.             }
  108.         }
  109.     }
複製代碼


回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

QQ|Archiver|手机版|自動贊助|中国农垦

GMT+8, 2025-4-19 12:45 , Processed in 0.035037 second(s), 19 queries .

抗攻擊 by GameHost X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表
一粒米 | 中興米 | 論壇美工 | 設計 抗ddos | 天堂私服 | ddos | ddos | 防ddos | 防禦ddos | 防ddos主機 | 天堂美工 | 設計 防ddos主機 | 抗ddos主機 | 抗ddos | 抗ddos主機 | 抗攻擊論壇 | 天堂自動贊助 | 免費論壇 | 天堂私服 | 天堂123 | 台南清潔 | 天堂 | 天堂私服 | 免費論壇申請 | 抗ddos | 虛擬主機 | 實體主機 | vps | 網域註冊 | 抗攻擊遊戲主機 | ddos |