首先先要下载一个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);
}