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串。