首先引入QRCoder Nuget包,方可使用。
using QRCoder;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Text;
namespace _SCscHero.Base.Help
{
/// <summary>
/// 有关二维码的帮助类
/// </summary>
public class QRCodeHelper
{
#region 根据字符串生成二维码
/// <summary>
/// 根据字符串生成二维码
/// </summary>
/// <param name="str">字符串</param>
/// <returns></returns>
public static Bitmap GenerateQRCode(string str)
{
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(str, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
return qrCode.GetGraphic(20);
}
#endregion
#region 将图片转成二进制流
public static byte[] BitmapConvertToByte(Bitmap image, ImageFormat format)
{
MemoryStream ms = new MemoryStream();
image.Save(ms, format);
var bytes = ms.GetBuffer();
ms.Close();
return bytes;
}
#endregion
#region 将图片转换成Base64编码的字符串
public static string BitmapConvertToString(Bitmap image)
{
MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
return Convert.ToBase64String(arr);
}
#endregion
}
}