C# 利用QRCodeEncoder生成二维码并保存至本地

首先需要通过Nuget包引用 ThoughtWorks.QRCode 包
实例代码:

// 实例化一个生成二维码的对象
QRCodeEncoder qrEncoder = new QRCodeEncoder();
// 设置二维码的编码模式 模式分为三种:数字,数字字母,字节,这个基本上都设置成Byte,支持汉字
qrEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
// 二维码像素宽度 设置二维码的大小,默认4,在尺寸小的情况下,版本参数过高则设备难以识别二维码
qrEncoder.QRCodeScale = 4;
//设置二维码的版本,默认7 该值影响二维码最高数据容量 7大致对应40个汉字长度,内容超出择需提升该数值
qrEncoder.QRCodeVersion = 7;
//设置错误校验级别,默认中等,二维码被遮挡住一部分实际上也是能扫出内容的,这个效验级别的意思就是
//当遮挡部分最大占整体多少时仍然可以被扫出来,M大概在20%左右,H为30%,级别越高相应的数据容量会缩小
//那些中间带图标的二维码,其实就是简单粗暴的用LOGO遮挡住了中间部分
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
// 根据内容生成二维码图像
Bitmap qrCodeBitmap = null;
qrCodeBitmap = qrEncoder.Encode(barCode);

// 保存到本地
ImageCodecInfo myImageCodecInfo = GetEncoderInfo(ImageFormat.Jpeg);
//设置质量 数字越大质量越好,但是到了一定程度质量就不会增加了,MSDN上没有给范围,只说是32为非负整数
EncoderParameters myEncoderParameters = new EncoderParameters(1)
{
    Param = new EncoderParameter[]
    {
        new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L)
    }
};
string qrCodePath = "QRCode"; // 打印文件路径
if (!Directory.Exists(qrCodePath))
{
    Directory.CreateDirectory(qrCodePath);
}
string qrCodeFileName = matchingNum + DateTime.Now.Ticks + new Random().Next(10000000, 99999999) + ".jpeg";
string qrFilePath = qrCodePath + @"/" + qrCodeFileName;
image.Save(qrFilePath, myImageCodecInfo, myEncoderParameters);

public static ImageCodecInfo GetEncoder(ImageFormat format)
{
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
    foreach (ImageCodecInfo codec in codecs)
    {
        if (codec.FormatID == format.Guid)
            return codec;
    }
    return null;
}

参考链接
C#关于QRCode使用方法以及相关参数说明

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值