Selaa lähdekoodia

[WebApplicationSample] 使用 QRCoder 生产二维码SVG

Roc 6 vuotta sitten
vanhempi
sitoutus
4ef12725d2

+ 21 - 0
samples/WebApplicationSample/Controllers/HomeController.cs

@@ -1,5 +1,8 @@
 using System.Diagnostics;
+using System.Drawing;
+using System.Text;
 using Microsoft.AspNetCore.Mvc;
+using QRCoder;
 using WebApplicationSample.Models;
 
 namespace WebApplicationSample.Controllers
@@ -24,6 +27,24 @@ namespace WebApplicationSample.Controllers
             return View();
         }
 
+        /// <summary>
+        /// 生成二维码SVG
+        /// </summary>
+        /// <param name="data"></param>
+        /// <param name="size"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public IActionResult QrCode(string data, int size = 168)
+        {
+            using (var qrGenerator = new QRCodeGenerator())
+            using (var qrCodeData = qrGenerator.CreateQrCode(data, QRCodeGenerator.ECCLevel.L))
+            using (var svgQrCode = new SvgQRCode(qrCodeData))
+            {
+                var svgText = svgQrCode.GetGraphic(new Size(size, size));
+                return File(Encoding.UTF8.GetBytes(svgText), "text/xml");
+            }
+        }
+
         public IActionResult Error()
         {
             return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });

+ 1 - 1
samples/WebApplicationSample/Views/Alipay/PreCreate.cshtml

@@ -41,7 +41,7 @@
                 <label>QrCode:</label>
                 @if (!string.IsNullOrEmpty(ViewData["qrcode"] as string))
                 {
-                    <img src="https://api.qrserver.com/v1/create-qr-code/?size=168x168&data=@ViewData["qrcode"]" />
+                    <embed src="../Home/QrCode?size=168&data=@ViewData["qrcode"]" width="168" height="168" type="image/svg+xml" />
                 }
             </div>
             <div class="form-group">

+ 3 - 3
samples/WebApplicationSample/Views/JDPay/QrCodePay.cshtml

@@ -52,9 +52,9 @@
             <div class="form-group">
                 <label>QrCode:</label>
                 @if (!string.IsNullOrEmpty(ViewData["qrcode"] as string))
-            {
-                <img src="https://api.qrserver.com/v1/create-qr-code/?size=168x168&data=@ViewData["qrcode"]" />
-        }
+                {
+                <embed src="../Home/QrCode?size=168&data=@ViewData["qrcode"]" width="168" height="168" type="image/svg+xml" />
+                }
             </div>
             <div class="form-group">
                 <label>Response:</label>

+ 1 - 1
samples/WebApplicationSample/Views/QPay/QrCodePay.cshtml

@@ -49,7 +49,7 @@
                 <label>QrCode:</label>
                 @if (!string.IsNullOrEmpty(ViewData["qrcode"] as string))
                 {
-                    <img src="https://api.qrserver.com/v1/create-qr-code/?size=168x168&data=@ViewData["qrcode"]" />
+                    <embed src="../Home/QrCode?size=168&data=@ViewData["qrcode"]" width="168" height="168" type="image/svg+xml" />
                 }
             </div>
             <div class="form-group">

+ 1 - 1
samples/WebApplicationSample/Views/WeChatPay/QrCodePay.cshtml

@@ -45,7 +45,7 @@
                 <label>QrCode:</label>
                 @if (!string.IsNullOrEmpty(ViewData["qrcode"] as string))
                 {
-                    <img src="https://api.qrserver.com/v1/create-qr-code/?size=168x168&data=@ViewData["qrcode"]" />
+                    <embed src="../Home/QrCode?size=168&data=@ViewData["qrcode"]" width="168" height="168" type="image/svg+xml" />
                 }
             </div>
             <div class="form-group">

+ 1 - 0
samples/WebApplicationSample/WebApplicationSample.csproj

@@ -9,6 +9,7 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.App" />
     <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.0" />
+    <PackageReference Include="QRCoder" Version="1.3.5" />
   </ItemGroup>
 
   <ItemGroup>