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