Asp.net Core 跨平台生成带Logo二维码
1. nuget 引用 QRCoder-ImageSharp
2.代码
using QRCoder; using SixLabors.ImageSharp.Formats.Jpeg; using Color = SixLabors.ImageSharp.Color; using Image = SixLabors.ImageSharp.Image; namespace Common { public class QrCoderUtil { /// <summary> /// 生成带logo二维码 /// </summary> /// <param name="content"></param> /// <param name="logoPath"></param> /// <returns></returns> public static byte[] CreateQrCode(string content, string logoPath) { QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.M); QRCode qrCode = new QRCode(qrCodeData); var qrCodeImage = qrCode.GetGraphic(20,Color.Black, Color.White,Image.Load(new MemoryStream(File.ReadAllBytes(logoPath)))); // return qrCodeImage; MemoryStream ms = new MemoryStream(); if (qrCodeImage == null) return new byte[ms.Length]; qrCodeImage.Save(ms,new JpegEncoder()); var bPicture = ms.GetBuffer(); return bPicture; } } }
3.使用
public class QrCodeModel : PageModel { private readonly IWebHostEnvironment _hostingStartup; public QrCodeModel(IWebHostEnvironment wHostingStartup) { _hostingStartup = wHostingStartup; } public IActionResult OnGet(string data) { var logoPath = _hostingStartup.WebRootPath+ "/images/qrcodelogo.png"; Response.ContentType = "image/jpeg"; //data = SecurityUtil.DecryptString(data); var bitmap = QrCoderUtil.CreateQrCode(data, logoPath); return File(bitmap, "image/png"); } }