文章目录
一、思路
环境:
1、内容生成二维码图片
2、保存到wwwroot为png格式
3、返回存储路径保存到数据库
4、前端读取显示
二、实现
1、Program.cs
csharp
//配置静态文件路径
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
});
2、二维码辅助类QrCodeHelper.cs
csharp
using QRCoder.Core;
using System.Drawing;
using System.Drawing.Imaging;
namespace Common
{
/// <summary>
/// 二维码生成
/// </summary>
public class QrCodeHelper
{
/// <summary>
/// 生成二维码并保存到指定路径
/// </summary>
public String Create(string content, int size = 20)
{
string uploadPath = "";
string filename = DateTime.Now.ToString("HHssmm") + ".png";
//保存路径
uploadPath = $"wwwroot\\upload\\{DateTime.Now.ToString("yyMMdd")}\\";
if (!Directory.Exists(uploadPath))
Directory.CreateDirectory(uploadPath);
// 创建QRCodeGenerator实例
QRCodeGenerator qrGenerator = new QRCodeGenerator();
// 生成二维码数据,ECCLevel.Q表示纠错级别(可选Q/L/M/H)
QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q);
// 创建二维码图像
QRCode qrCode = new QRCode(qrCodeData);
// 获取Bitmap对象,参数:像素大小、前景色、背景色
Bitmap qrCodeImage = qrCode.GetGraphic(size, Color.Black, Color.White, false);
// 保存到指定路径(默认PNG格式)
qrCodeImage.Save(uploadPath + filename, ImageFormat.Png);
// 释放资源(避免内存泄漏)
qrCodeImage.Dispose();
//返回读取路径
return $"/upload/{DateTime.Now.ToString("yyMMdd")}/"+filename; ;
}
}
}
/*
// 使用示例
QrCodeHelper cd = new QrCodeHelper();
m.qrcodeSrc = cd.Create("https://www.example.com");
// 支持:需要nuget QRCoder.Core包
*/
三、效果

保存后:

读出的路径加上api前缀就OK