QRCodeController.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System.Drawing;
  2. using System.Text;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.Extensions.Logging;
  5. using QRCoder;
  6. namespace WebApplicationSample.Controllers
  7. {
  8. [Route("api/[controller]")]
  9. [ApiController]
  10. public class QRCodeController : ControllerBase
  11. {
  12. private readonly ILogger<QRCodeController> _logger;
  13. public QRCodeController(ILogger<QRCodeController> logger)
  14. {
  15. _logger = logger;
  16. }
  17. /// <summary>
  18. /// 生成二维码SVG
  19. /// </summary>
  20. /// <param name="data">数据</param>
  21. /// <param name="size">尺寸</param>
  22. [HttpGet]
  23. public IActionResult GetQRCode(string data, int size = 180)
  24. {
  25. using (var qrGenerator = new QRCodeGenerator())
  26. using (var qrCodeData = qrGenerator.CreateQrCode(data, QRCodeGenerator.ECCLevel.L))
  27. using (var svgQrCode = new SvgQRCode(qrCodeData))
  28. {
  29. var svgText = svgQrCode.GetGraphic(new Size(size, size), false, SvgQRCode.SizingMode.WidthHeightAttribute);
  30. return File(Encoding.UTF8.GetBytes(svgText), "image/svg+xml");
  31. }
  32. }
  33. }
  34. }