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

浙公网安备 33010602011771号