.NET Core 生成二维码

二维码的生成有好多种方式,本篇将使用QRCoder来实现,小巧易用,支持并发生成,不依赖第三方库。

开源地址:https://github.com/codebude/QRCoder

先在项目中添加组件

Install-Package QRCoder

然后添加一个生成二维码的接口,并且实现

using QRCoder; using System.Drawing; using System.Drawing.Imaging; using System.IO; public interface IQRCode { byte[] GenerateQRCode(string content); } public class QRCode : IQRCode { public byte[] GenerateQRCode(string content) { var generator = new QRCodeGenerator(); var codeData = generator.CreateQrCode(content, QRCodeGenerator.ECCLevel.M, true); QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData); var bitmapImg = qrcode.GetGraphic(10, Color.Black, Color.White, false); using MemoryStream stream = new MemoryStream(); bitmapImg.Save(stream, ImageFormat.Jpeg); return stream.GetBuffer(); } }

qrcode.GetGraphic(...)默认返回了Bitmap类型,这里处理成了byte[]

qrcode.GetGraphic(...)方法参数简单说明,可以根据开发时候的注释说明进一步了解。

public Bitmap GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor, Bitmap icon = null, int iconSizePercent = 15, int iconBorderWidth = 6, bool drawQuietZones = true) { // int pixelsPerModule 生成二维码图片的像素大小 // Color darkColor 暗色 一般设置为Color.Black 黑色 // Color lightColor 亮色 一般设置为Color.White 白色 // Bitmap icon 二维码水印图标 例如:Bitmap icon = new Bitmap(context.Server.MapPath("~/images/zs.png"));默认为NULL ,加上这个二维码中间会显示一个图标 // int iconSizePercent 水印图标的大小比例 ,可根据自己的喜好设置 // int iconBorderWidth 水印图标的边框 // bool drawQuietZones 静止区,位于二维码某一边的空白边界,用来阻止读者获取与正在浏览的二维码无关的信息,即是否绘画二维码的空白边框区域 默认为true }

在控制器中注入调用

using Microsoft.AspNetCore.Mvc; [Route("api/[controller]")] [ApiController] public class QrCodeController : ControllerBase { [HttpGet] public FileContentResult QrCode([FromServices] IQRCode _qrcode, string content) { var buffer = _qrcode.GenerateQRCode(content); return File(buffer, "image/jpeg"); } }

QRCoder会根据content的内容来生成对应的二维码,如果传入的是纯文本,则返回文本内容,如果传入的是一个标准的URL,则扫描二维码的时候会直接打开链接,还是很方便人性化的。


__EOF__

本文作者阿星Plus
本文链接https://www.cnblogs.com/meowv/p/13614258.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   阿星Plus  阅读(1017)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示