之前在用.NET开发项目的时候,经常会用到将文字转为我二维码图片。比如url地址,单据号。 之前我都是自己写的方法,生成二维码。
public static string CreateQRCode(string content, int moduleSize = 9)
{
QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);
QrCode qrCode = qrEncoder.Encode(content);
GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(moduleSize, QuietZoneModules.Two), Brushes.Black, Brushes.White);
DrawingSize dSize = render.SizeCalculator.GetSize(qrCode.Matrix.Width);
Bitmap map = new Bitmap(dSize.CodeWidth, dSize.CodeWidth);
Graphics g = Graphics.FromImage(map);
render.Draw(g, qrCode.Matrix);
string base64Str = "";
using (MemoryStream ms1 = new MemoryStream())
{
map.Save(ms1, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr1 = new byte[ms1.Length];
ms1.Position = 0;
ms1.Read(arr1, 0, (int)ms1.Length);
ms1.Close();
base64Str = Convert.ToBase64String(arr1);
}
return base64Str;
}
最近发现其实没必要那么麻烦,直接在NuGet中安装QrCode,然后直接使用就行了,一行代码就可以搞定。
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(text, (QRCodeGenerator.ECCLevel)eccLevel);
Base64QRCode qrCode = new Base64QRCode(qrCodeData);
string base64QrCode = qrCode.GetGraphic(2);
return base64QrCode;
而且生成出来的二维码质量非常好,扫码效果很好。