C# 使用QRCoder生成二维码
前言
该方法使用第三方类库QRCoder和QRCoder.code。上述两个类库应用于不同的NET项目,QRCoder应用于C# .NET frameWork框架,QRCoder.code应用于 .NET Code。
使用方法
方法一:
public interface IQRCodeMoons: ISingletonDependency
{
Bitmap GetQRCode(string data, int pixel);
byte[] GetQrCodeByteArray(string data, int pixel = 4);
}
/// <summary>
/// 二维码
/// </summary>
public class QRCodeMoons: IQRCodeMoons
{
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="url">存储内容</param>
/// <param name="pixel">像素大小</param>
/// <returns></returns>
public Bitmap GetQRCode(string data, int pixel)
{
QRCodeGenerator generator = new QRCodeGenerator();
QRCodeData codeData = generator.CreateQrCode(data, QRCodeGenerator.ECCLevel.M, true);
QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData);
Bitmap qrImage = qrcode.GetGraphic(pixel, Color.Black, Color.White, true);
return qrImage;
}
/// <summary>
/// 生成二维码并转成字节
/// </summary>
/// <param name="data"></param>
/// <param name="pixel"></param>
/// <returns></returns>
public byte[] GetQrCodeByteArray(string data, int pixel = 4)
{
var bitmap = GetQRCode(data, pixel);
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, ImageFormat.Jpeg);
return ms.GetBuffer();
}
}
}直接把byte[] 字节返回给前端 前端通过img标签加载二维码
<img "data:image/png;base64,"+二维码字节数组 />
也可这样实现
<div [ngStyle]="{'background-image':'url(data:image/png;base64,'+data.qrCode+')'}"></div>
<img width="75px" src="data:image/png;base64,{{data.qrCode}}" />方法二:
定义类方法
/// <summary>
/// 生成二维码Base64串
/// </summary>
/// <param name="url">生成二维码的内容</param>
/// <param name="pixel">二维码的大小</param>
/// <returns>返回Base64串</returns>
public static string GetQRCode(string url, int pixel)
{
var imgType = Base64QRCode.ImageType.Jpeg;
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(url, QRCodeGenerator.ECCLevel.Q);
Base64QRCode qrCode = new Base64QRCode(qrCodeData);
string qrCodeImageAsBase64 = qrCode.GetGraphic(pixel, Color.Black, Color.White, true, imgType);
return qrCodeImageAsBase64;
}NET code Web使用方式
<img src="data:image/png;base64,@ViewBag.imgaa" />
@ViewBag.imgaa是GetQRCode返回的Base64串。

