C# 使用 ThoughtWorks.QRCode 生成与解析二维码
本文详解如何使用 C# 和 ThoughtWorks.QRCode 类库快速生成自定义参数的二维码,以及如何通过解码类将二维码图片还原为原始文本数据。
准备工作
要实现二维码的生成与解析,首先需要引入 ThoughtWorks.QRCode.dll 类库。在项目中添加该引用后,务必在代码文件头部包含以下命名空间:
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
using ThoughtWorks.QRCode.Codec.Util;生成二维码
生成二维码主要依赖 QRCodeEncoder 类。为了生成高质量的二维码,需要设置编码模式、大小、版本号以及纠错等级等关键属性。
第1步:初始化编码器并配置编码模式
创建 QRCodeEncoder 实例,并根据用户需求或业务场景选择编码模式,以支持不同长度的字符集:
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
string encoding = "Byte"; // 模拟获取的用户输入
if (encoding == "Byte")
{
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
}
else if (encoding == "AlphaNumeric")
{
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
}
else if (encoding == "Numeric")
{
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
}第2步:设置二维码的尺寸与版本
通过调整缩放比例(Scale)和版本号(Version),可以控制二维码生成的图像精度及其容量上限。建议加入异常处理以防用户输入非法数值:
try
{
int scale = Convert.ToInt16("20"); // 实际尺寸
qrCodeEncoder.QRCodeScale = scale;
}
catch (Exception ex)
{
// 提示无效的尺寸!
return;
}
try
{
int version = Convert.ToInt16("1"); // 实际版本
qrCodeEncoder.QRCodeVersion = version;
}
catch (Exception ex)
{
// 提示无效的版本
}第3步:配置纠错等级并生成图像
最后设置纠错等级(Error Correction Level),这决定了二维码被遮挡后仍可被识别的程度。配置完成后调用 Encode 方法即可生成 Image 对象:
string errorCorrect = "M"; // L, M, Q, H
if (errorCorrect == "L")
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
else if (errorCorrect == "M")
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
else if (errorCorrect == "Q")
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
else if (errorCorrect == "H")
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;
string data = "待编码的内容"; // 实际字符串
System.Drawing.Image image;
image = qrCodeEncoder.Encode(data);
// 此时 image 即为生成的二维码图像,可绑定至PictureBox显示或保存解析二维码
解析二维码依赖于 QRCodeDecoder 类。只需传入包含二维码的图片,即可提取其中的字符串信息。
QRCodeDecoder decoder = new QRCodeDecoder();
// 假设 pb_view.Image 是已显示的二维码图片
String decodedString = decoder.decode(new QRCodeBitmapImage(new System.Drawing.Bitmap(pb_view.Image)));
// decodedString 即为解析出的原始数据以上就是 C# 使用 ThoughtWorks.QRCode 生成和解析二维码的详细内容,更多关于 .NET 图像编程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









