.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

相关推荐
步步为营DotNet18 小时前
探索.NET 11:.NET Aspire 在云原生微服务治理中的创新实践
微服务·云原生·.net
学以智用19 小时前
.NET Core 数据验证(最全实战指南)
后端·.net
无风听海21 小时前
.NET 10 Claim 身份体系深度解析
.net
周杰伦fans21 小时前
不支持目标框架: C#项目面向不再受支持的.NET Framework4.6.2
开发语言·c#·.net
喵叔哟2 天前
12.【.NET10 实战--孢子记账--产品智能化】--技术选型
.net
步步为营DotNet2 天前
探秘.NET 11:C# 14 特性在后端性能优化中的深度应用
性能优化·c#·.net
唐青枫2 天前
别把登录写散了:C#.NET IdentityServer4 统一认证与 JWT 授权实战
c#·.net
桑榆肖物2 天前
ImprovWifi 跨平台传输层设计:把协议层做薄,把宿主层做稳
嵌入式硬件·wifi·.net·ble
步步为营DotNet3 天前
深度探索.NET 11:Blazor 在客户端数据可视化的革新与优化
信息可视化·.net
我是唐青枫4 天前
C#.NET YARP + OpenTelemetry:网关链路追踪实战
开发语言·c#·.net