1、项目添加QRCoder.dll 和System.Drawing.dll的引用
2、创建二维码公共处理类(QRCoderHelper.cs)
/// <summary>
/// 二维码公共处理类
/// </summary>
public static class QRCoderHelper
{
/// <summary>
/// 创建二维码返回文件路径名称
/// </summary>
/// <param name="plainText">二维码内容</param>
public static string CreateQRCodeToFile(string plainText)
{
try
{
string fileName = "";
if (String.IsNullOrEmpty(plainText))
{
return "";
}
//二维码文件目录
string filePath = Path.Combine("C:\\","Down\\");
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
//创建二维码文件路径名称
fileName = filePath + DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100, 1000) + ".jpeg";
QRCodeGenerator qrGenerator = new QRCodeGenerator();
//QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
QRCode qrcode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrcode.GetGraphic(15);
qrCodeImage.Save(fileName, ImageFormat.Jpeg);
return fileName;
}
catch (Exception ex)
{
throw new Exception("创建二维码返回文件路径名称方法异常", ex);
}
}
/// <summary>
/// 创建二维码返回byte数组
/// </summary>
/// <param name="plainText">二维码内容</param>
public static byte[] CreateQRCodeToBytes(string plainText)
{
try
{
if (String.IsNullOrEmpty(plainText))
{
return null;
}
QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
//QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
QRCode qrcode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrcode.GetGraphic(15);
MemoryStream ms = new MemoryStream();
qrCodeImage.Save(ms, ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
return arr;
}
catch (Exception ex)
{
throw new Exception("创建二维码返回byte数组方法异常", ex);
}
}
/// <summary>
/// 创建二维码返回Base64字符串
/// </summary>
/// <param name="plainText">二维码内容</param>
public static string CreateQRCodeToBase64(string plainText, bool hasEdify = true)
{
try
{
string result = "";
if (String.IsNullOrEmpty(plainText))
{
return "";
}
QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
//QRCodeGenerator.ECCLevel:纠错能力,Q级:约可纠错25%的数据码字
QRCodeData qrCodeData = qrGenerator.CreateQrCode(plainText, QRCodeGenerator.ECCLevel.Q);
QRCode qrcode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrcode.GetGraphic(15);
MemoryStream ms = new MemoryStream();
qrCodeImage.Save(ms, ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
if (hasEdify)
{
result = "data:image/jpeg;base64," + Convert.ToBase64String(arr);
}
else
{
result = Convert.ToBase64String(arr);
}
return result;
}
catch (Exception ex)
{
throw new Exception("创建二维码返回Base64字符串方法异常", ex);
}
}
}
}
调用
//二维码内容
string plainText = "https://i.cnblogs.com/EditPosts.aspx?opt=1";
//创建二维码返回文件路径名称
string fileName = QRCoderHelper.CreateQRCodeToFile(plainText);