.net8.0_webapi 生成二维码

作者:焚 城日期:2025/10/17

文章目录

  • 一、思路
  • 二、实现
    • 1、Program.cs
    • 2、二维码辅助类QrCodeHelper.cs
  • 三、效果
    • 保存后:

一、思路

环境:
1、内容生成二维码图片
2、保存到wwwroot为png格式
3、返回存储路径保存到数据库
4、前端读取显示

二、实现

1、Program.cs

1//配置静态文件路径
2app.UseStaticFiles(new StaticFileOptions
3{
4    FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
5});
6

2、二维码辅助类QrCodeHelper.cs

1using QRCoder.Core;
2using System.Drawing;
3using System.Drawing.Imaging;
4namespace Common
5{
6    /// <summary>
7    /// 二维码生成
8    /// </summary>
9    public class QrCodeHelper
10    {
11        /// <summary>
12        /// 生成二维码并保存到指定路径
13        /// </summary>
14        public String Create(string content, int size = 20)
15        {
16            string uploadPath = "";
17            string filename = DateTime.Now.ToString("HHssmm") + ".png";
18            //保存路径
19            uploadPath = $"wwwroot\\upload\\{DateTime.Now.ToString("yyMMdd")}\\";
20            if (!Directory.Exists(uploadPath))
21                Directory.CreateDirectory(uploadPath);
22            // 创建QRCodeGenerator实例
23            QRCodeGenerator qrGenerator = new QRCodeGenerator();
24            // 生成二维码数据,ECCLevel.Q表示纠错级别(可选Q/L/M/H)
25            QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q);
26            // 创建二维码图像
27            QRCode qrCode = new QRCode(qrCodeData);
28            // 获取Bitmap对象,参数:像素大小、前景色、背景色
29            Bitmap qrCodeImage = qrCode.GetGraphic(size, Color.Black, Color.White, false);
30
31            // 保存到指定路径(默认PNG格式)
32            qrCodeImage.Save(uploadPath + filename, ImageFormat.Png);
33
34            // 释放资源(避免内存泄漏)
35            qrCodeImage.Dispose();
36            //返回读取路径
37            return $"/upload/{DateTime.Now.ToString("yyMMdd")}/"+filename; ;
38
39        }
40    }
41}
42/*
43// 使用示例
44  QrCodeHelper cd = new QrCodeHelper();
45  m.qrcodeSrc = cd.Create("https://www.example.com");
46// 支持:需要nuget  QRCoder.Core包
47*/
48

三、效果

在这里插入图片描述

保存后:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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


.net8.0_webapi 生成二维码》 是转载文章,点击查看原文


相关推荐


axios请求
梦6502025/10/15

安装 Axios 在项目中安装 Axios 依赖,可以通过 npm 或 yarn 进行安装。 npm install axios 或 yarn add axios 引入 Axios 在需要使用 Axios 的文件中引入 Axios。 import axios from 'axios'; 发起 GET 请求 使用 Axios 发起 GET 请求,获取数据。 axios.get('https://api.example.com/data') .then(response


公开一个AI产品的商业逻辑与设计方案——AI带来的涂色卡自由
华洛2025/10/14

我孩子正是玩涂色绘本的年纪,我每年给她买绘本的开销就要几百块钱。 涂色绘本这东西也没啥,就是某个角色的线稿,让儿童发挥想象涂色用。 高级一点的,还会给你一个参照的涂好颜色的形象,就是下面图上这种: 每年花个几百块钱虽然不多,但是也总觉的不值,而且绘本的角色、形象都是固定的,孩子想玩的多一次就要买很多本。 直到前几个月开始,我开始自己用AI做线稿图,打印后带给孩子涂色。我发现了一个事情: 孩子的快乐一点都没少,甚至快乐加倍了! 以前买一本拉布布就涂几张,不感兴趣了,扔一边就去涂公主。 现在完全不


设计模式-迭代器模式
紫菜紫薯紫甘蓝2025/10/13

设计模式-迭代器模式 迭代器模式(Iterator Design Pattern),也叫作游标模式(Cursor Design Pattern),用来给类实例提供一种遍历对象的方式。 案例分析 首先写一个经典的 User 类 @Data @ToString public class User { private String uuid; private String name; private Integer age; } 通常我们遍历一个对象有三种方式 pub


医疗设备控制系统中同步与异步通信的架构设计
oioihoii2025/10/11

在医疗设备控制系统的开发过程中,我们面临一个经典的技术挑战:如何在保持用户界面流畅响应的同时,可靠地处理设备控制的长时间操作。本文将通过一个医疗床控制系统的实际案例,分享我们在同步与异步通信架构设计上的解决方案。 问题场景 我们的医疗床控制系统采用主从架构:Host(主控端)与EPC(设备控制单元)通过双端口通信: Command端口:用于发送控制命令和接收立即响应 Event端口:用于接收异步的执行结果和状态更新 关键需求: 用户点击"移动病床"按钮后,需要等待设备执行完成(可能耗时数十


【SCI一区】【电动车】基于ADMM双层凸优化的燃料电池混合动力汽车研究(Matlab代码实现)
荔枝科研社2025/10/9

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭:行百里者,半于九十。 💥1 概述 基于ADMM双层凸优化的燃料电池混合动力汽车研究 随着车辆互联性的出现,互联汽车 (CVs) 在增强道路安全、改善乘坐舒适性、提高交通效率和提高能源效率方面提供了巨大的潜力。通过从车对车 (V2V) 和车对基础设施 (V2I) 通信中获取交通信息,CV 能够更准确、更广泛地感知


第7章:数据库与持久化存储
芝麻开门-新起点2025/10/8

7.1 为何需要数据库:记忆与状态管理 内容讲解 默认情况下,AI Bot 是**“无状态”的。这意味着除了短暂的当前对话上下文,它不记得任何过去的事情。每次对话都是一次全新的开始。然而,在许多真实场景中,我们需要 Bot 拥有记忆**,能够持久化地存储和检索信息。这就是**数据库(Database)**的作用。 数据库为 Bot 提供了以下关键能力: 长期记忆:记住用户的偏好、历史订单、个人信息等。例如,一个订餐 Bot 应该记住你常去的地址和喜欢的口味。状态跟踪:在复杂的多轮任务中,跟踪当前


Python 的 TCP 编程
hubenchang05152025/10/6

#Python 的 TCP 编程 传输控制协议(Transmission Control Protocol) 是一种 面向连接、可靠传输 的网络通信协议,是现代互联网最核心的协议之一。 #客户端程序 TCP 客户端程序通常只需要连接到服务器然后收发数据即可。下面是一个示例,它向 tcpbin.com 的 4242 端口发送 hello\n,对方会原样返回。 import socket # 创建 TCP socket sock = socket.socket(socket.AF_INET, so


【深度相机术语与概念】
是刘彦宏吖2025/10/5

获取相机输出的 深度图、灰度图、彩色图 和 点云图,用于导航、避障、三维建模、手势识别等应用。 【深度相机术语与概念】 相机类型 3D 相机 3D 相机是一种能够捕捉三维图像的相机。它通过各种技术手段(如立体视觉、飞行时间、结构光等)获取物体的三维形状和深度信息。3D 相机可以生成具有 3D 空间坐标信息的点云数据,使得计算机能够理解和处理三维空间中的物体。 主动双目立体相机 主动双目立体相机是一种结合了双目立体视觉和主动光源(如结构光)的相机系统。它通过投射已知的光图案到场景中,并使用双目相


HTTP为什么不安全?
你的人类朋友2025/10/4

🌐 前言 你好呀,我是你的人类朋友! 本文主要讲讲 HTTP 为什么不安全,以及 HTTPS 如何解决这些问题。 ❗❗ 核心问题速览 HTTP(超文本传输协议):互联网上应用最广泛的网络协议,但数据以明文形式传输。注意,是明文,谁都能看!! HTTPS(安全超文本传输协议):HTTP 的安全版本,= HTTP + SSL/TLS 加密,就像把明信片放进防拆信封里寄送,别人无法看到信息的内容。 补充知识 1:SSL/TLS在【传输层】对 HTTP 数据进行加密,确保隐私和完整性。 补充知识 2


SIMD编程入门:让性能飞起来的实践指南
oioihoii2025/10/3

在现代计算中,单指令多数据流(SIMD)技术就像是一把性能优化的瑞士军刀,能让你的程序速度提升数倍甚至数十倍。本文将带你从零开始,掌握这把利器的使用之道。 什么是SIMD?从汽车生产线说起 想象一下汽车生产线:传统方式是一个工人依次安装每个轮胎,而SIMD就像是培训了一个专门团队,能够同时安装四个轮胎。这就是单指令多数据流的核心思想——一条指令,多个数据。 // 传统标量计算 - 依次处理每个元素 for (int i = 0; i < 4; i++) { result[i] = a[

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0