C# 二维码 ThoughtWorks.QRCode.dll
原文出处:https://www.cnblogs.com/cang12138/p/5209669.html (已做有补充)
延伸阅读:使用ThoughtWorks.QRCode 生成二维码(带logo)
ThoughtWorks.QRCode.dll:
2、通过 NuGet 添加
后台代码:
using System;
using System.Drawing;
using System.Text;
using ThoughtWorks.QRCode.Codec;
namespace ConsoleTest
{
public class Test
{
#region 生成二维码
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
private static string QRCode()
{
System.Drawing.Bitmap bt;
string enCodeString = "http://www.baidu.com";
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
qrCodeEncoder.QRCodeScale = 4;//大小(值越大生成的二维码图片像素越高)
qrCodeEncoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//错误效验、错误更正(有4个等级)
qrCodeEncoder.QRCodeBackgroundColor = Color.Yellow;//背景色
qrCodeEncoder.QRCodeForegroundColor = Color.Green;//前景色
bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
string filename = "code";
string file_path = AppDomain.CurrentDomain.BaseDirectory + "QRCode\\";
string codeUrl = file_path + filename + ".jpg";
//根据文件名称,自动建立对应目录
if (!System.IO.Directory.Exists(file_path))
System.IO.Directory.CreateDirectory(file_path);
bt.Save(codeUrl);//保存图片
return codeUrl;
}
#endregion
}
}
二维码效果:
补充:
将二维码转换成网页可以显示的数据
/// <summary>
/// 将二维码转换成网页可以显示的数据
/// </summary>
/// <param name="qrcode"></param>
/// <returns></returns>
public static string GetQrcodeImageData(string qrcode)
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = 12;
qrCodeEncoder.QRCodeVersion = 2;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
var bmp = qrCodeEncoder.Encode(qrcode);
byte[] b = null;
using (MemoryStream stream = new MemoryStream())
{
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);//将图像以指定的格式存入缓存内存流
b = new byte[stream.Length];
stream.Position = 0;
stream.Read(b, 0, Convert.ToInt32(b.Length));
}
return "data:image/jpeg;base64," + Convert.ToBase64String(b);
}