1、通过ThoughtWorks.QRCode实现生成二维码,可直接通过添加Nuget包引用
/// <summary>
/// ThoughtWorks.QRCode生成二维码
/// </summary>
/// <param name="filePath">二维码生成后保存地址</param>
/// <param name="qrCodeContent">二维码内容</param>
public static void CreateQRCode(string filePath, string qrCodeContent)
{
ThoughtWorks.QRCode.Codec.QRCodeEncoder qrCodeEncoder = new ThoughtWorks.QRCode.Codec.QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = 4;//二维码大小比例
qrCodeEncoder.QRCodeVersion = 8;
qrCodeEncoder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.M;
System.Drawing.Image image = qrCodeEncoder.Encode(qrCodeContent, Encoding.UTF8);//生成二维码图片
System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
fs.Close();
image.Dispose();
}
/// <summary>
/// 二维码解码
/// </summary>
/// <param name="filePath">二维码图片路径</param>
/// <returns></returns>
public static string QRCodeDecoder(string filePath)
{
if (!System.IO.File.Exists(filePath))
{ return null; }
System.Drawing.Bitmap myBitmap = new System.Drawing.Bitmap(System.Drawing.Image.FromFile(filePath));
ThoughtWorks.QRCode.Codec.QRCodeDecoder decoder = new ThoughtWorks.QRCode.Codec.QRCodeDecoder();
string decodedString = decoder.decode(new ThoughtWorks.QRCode.Codec.Data.QRCodeBitmapImage(myBitmap), Encoding.UTF8);
return decodedString;
}
2、通过QRCoder实现生成二维码,可直接通过添加Nuget包引用
/// <summary>
/// 生成二维码可附带中央水印
/// </summary>
/// <param name="filePath">二维码生成后保存地址</param>
/// <param name="qrCodeContent">二维码内容</param>
/// <param name="iconPath">二维码中央水印保存地址</param>
public static void CreateQRCode(string filePath, string qrCodeContent, string iconPath = "")
{
// 生成二维码的内容
QRCoder.QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
QRCoder.QRCodeData qrCodeData = qrGenerator.CreateQrCode(qrCodeContent, QRCoder.QRCodeGenerator.ECCLevel.Q);
QRCoder.QRCode qrcode = new QRCoder.QRCode(qrCodeData);
System.Drawing.Bitmap icon = null;//中央水印图标
int iconSizePercent = 0;//水印图标大小
int iconBorderWidth = 0;//水印图标边框
int pixelsPerModule = 55;//像素大小
bool drawQuietZones = false;//是否需要二维码外围空白区域(白边)
System.Drawing.Color darkColor = System.Drawing.Color.Black;//二维码暗色部分,Color.颜色
System.Drawing.Color lightColor = System.Drawing.Color.White;//亮色部分,Color.颜色
//判断有无中心水印图标
if (!string.IsNullOrWhiteSpace(iconPath))
{
icon = new System.Drawing.Bitmap(iconPath);
iconSizePercent = 10;
iconBorderWidth = 10;
}
//设置生成二维码
System.Drawing.Bitmap qrCodeImage = qrcode.GetGraphic(pixelsPerModule, darkColor, lightColor, icon, iconSizePercent, iconBorderWidth, drawQuietZones);
//保存二维码图片
System.IO.Stream outputStream = new System.IO.FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
qrCodeImage.Save(outputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
outputStream.Close();
outputStream.Dispose();
}
仅个人记录
参考文章:C# 生成二维码 QRCoder
更多推荐
C#生成二维码(【ThoughtWorks.QRCode】及【QRCoder】)
发布评论