C# 二维码自动生成
首先先要下载一个NuGet包
代码部分:
public static Bitmap CreateQrCodeBitmap(string message, string remark, int size = 250, QRCodeGenerator.ECCLevel eccLevel = QRCodeGenerator.ECCLevel.L, int pixelsPerModule = 20, string darkColorHtmlHex = "#000000", string lightColorHtmlHex = "#FFFFFF", string iconFileFullPath = "", bool drawQuietZones = true)
{
// 创建一个新的位图对象,用于存储生成的二维码
Bitmap qrCodeBitmap = new Bitmap(size, size);
// 将输入的 HTML 十六进制颜色码转换为颜色对象
var darkColor = ColorTranslator.FromHtml(darkColorHtmlHex);
var lightColor = ColorTranslator.FromHtml(lightColorHtmlHex);
// 使用 QRCoder 库生成二维码
using (var qrGenerator = new QRCodeGenerator())
{
// 创建二维码数据
using (var qrCodeData = qrGenerator.CreateQrCode(message, eccLevel))
{
// 将二维码数据封装成 QRCode 对象
using (var qrCode = new QRCode(qrCodeData))
{
// 获取二维码的位图图像,并设置像素大小、颜色及是否绘制安静区域
qrCodeBitmap = qrCode.GetGraphic(Convert.ToInt32(size / 29), darkColor, lightColor, drawQuietZones);
}
}
}
// 在二维码图像上绘制备注信息
using (Graphics graphics = Graphics.FromImage(qrCodeBitmap))
{
// 设置绘制备注信息的字体和颜色
Font font = new Font("Arial", 10);
Brush brush = new SolidBrush(Color.Black);
// 测量备注信息文本的大小
SizeF noteSize = graphics.MeasureString(remark, font);
// 计算备注信息绘制的起始点位置
PointF point = new PointF(
(qrCodeBitmap.Width - noteSize.Width) / 2,
qrCodeBitmap.Height - noteSize.Height);
// 在二维码图像上绘制备注信息
graphics.DrawString(remark, font, brush, point);
}
// 返回包含二维码及备注信息的位图对象
return qrCodeBitmap;
}
将输出格式转换成图片显示:
var bitmap = QrCodeHelper.CreateQrCodeBitmap(code, name, size);
// 返回Bitmap作为PNG图像
//return File(ToMemoryStream(codes, ImageFormat.Png), "image/png");
using (var memoryStream = new MemoryStream())
{
// 将Bitmap保存到内存流中
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
// 将内存流转换为字节数组
byte[] imageBytes = memoryStream.ToArray();
// 将字节数组转换为Base64字符串
string base64String = Convert.ToBase64String(imageBytes);
// 返回数据URI
return new RtnMsg("成功","data:image/png;base64," + base64String);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构