.net8.0_webapi 生成二维码

文章目录

一、思路

环境:

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

相关推荐
学以智用9 小时前
.NET 10 完整详解
.net
玩泥巴的11 小时前
MAF + 飞书:让大模型干活,但别让它乱干
ai·c#·.net·飞书·agent
步步为营DotNet16 小时前
Async 状态机要搬进运行时了:.NET 10 Runtime Async 实测,快的地方快 1.5 倍,贵的地方贵 5 倍
性能优化·c#·.net·async·runtime
步步为营DotNet16 小时前
System.Text.Json 源生成:三个“看起来已经生效“的静默失效
c#·.net·native aot·源生成
学以智用3 天前
C# Console App(控制台应用)模板详解
.net
宝桥南山5 天前
.NET 11 - 尝试一下Minimal API中的异步验证新特性
microsoft·微软·c#·asp.net·.net·.netcore
无风听海5 天前
深入理解.NET中的 Lazy<T>
服务器·php·.net
海盗12345 天前
微软技术日报 2026-10-14:十月补丁 1411 个漏洞,.NET 11 交出 RC2
人工智能·microsoft·机器人·aigc·.net