代码拉取完成,页面将自动刷新
ThoughtWorks.QRCode很好用,但是该类库不支持标准库
于是我通过反编译dll,做了个标准版,并依赖引用了System.Drawing.Common
另外我发现当解析数据过长,或者QRCodeVersion>=30时,会抛出异常,
这个我做了修复,使用自动QRCodeVersion,也就是这个属性无需赋值,参考使用示例
作者haoersheng没有留联系方式,如有侵权请联系我删除!!!
使用示例
using System.Drawing;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
namespace CommonUtils
{
/// <summary>
/// 二维码工具
/// </summary>
public static class QrCodeUtil
{
/// <summary>
/// 返回二维码图片
/// </summary>
public static Bitmap Encode(string text)
{
var qrCodeEncoder = new QRCodeEncoder();
//qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
//qrCodeEncoder.QRCodeScale = 4;
//qrCodeEncoder.QRCodeVersion = 29;
//qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
return qrCodeEncoder.Encode(text);
}
/// <summary>
/// 定义参数,生成二维码
/// </summary>
public static void Create(string text, string path)
=> Encode(text).Save(path);
/// <summary>
/// 返回二维码定义的字符串
/// </summary>
public static string Decode(Bitmap image)
{
var qrCodeBitmapImage = new QRCodeBitmapImage(image);
var qrCodeDecoder = new QRCodeDecoder();
return qrCodeDecoder.decode(qrCodeBitmapImage);
}
/// <summary>
/// 返回二维码定义的字符串
/// </summary>
public static string Decode(string path)
=> Decode(new Bitmap(path));
}
}
var path = "D:/" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png";
var qr = QrCodeUtil.Encode("Hello World!");
qr.Save(path);
Console.WriteLine(QrCodeUtil.Decode(qr));
path = "D:/" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png";
QrCodeUtil.Create("中国智造,惠及全球!", path);
Console.WriteLine(QrCodeUtil.Decode(path));
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
源码
https://gitee.com/atalent/ThoughtWorks.QRCode
浏览
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型