本文作者:小黑黑

使用QRCoder生成二维码

小黑黑 6个月前 ( 10-10 ) 253 抢沙发
使用QRCoder生成二维码摘要:        在项目中经常遇到根据用户的推荐码来生成推荐二维码的功能,所以本次我们使用QRCoder来生成一个简单的二维码。 &n...

       在项目中经常遇到根据用户的推荐码来生成推荐二维码的功能,所以本次我们使用QRCoder来生成一个简单的二维码。

       首先我们在nuget上面获取QRCoder,并获取到自己的项目中。接着我们创建一个类 QrCodeHelper,里面写我们生成二维码的方法 Generator(string content, string path, string fileName)。

/// <summary>
/// 生成二维码帮助类
/// </summary>
public class QrCodeHelper
{

    /// <summary>
    /// 生成二维码
    /// </summary>
    /// <param name="content">二维码内容</param>
    /// <param name="path">保存地址</param>
    /// <returns>保存二维码地址</returns>
    public static string Generator(string content, string path, string fileName)
    {
        QRCodeGenerator qrGenerator = new QRCodeGenerator();
        QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q);
        QRCode qrcode = new QRCode(qrCodeData);
        Bitmap qrCodeImage = qrcode.GetGraphic(5, Color.Black, Color.White, null, 15, 6, false);
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string filePath = $"{path}/{fileName}.png";
        qrCodeImage.Save(filePath);
        return filePath;
    }
}

       很简单,这样我们简单的生成二维码就生成了,其中GetGraphic中的几个参数做一个说明。

参数说明
pixelsPerModule生成二维码图片的像素大小
darkColor暗色,一般为Color.Black 黑色
lightColor亮色,一般为Color.White 白色
icon二维码中间的图标
iconSizePercent中间图标的大小比例
iconBorderWidth中间图标的边框
drawQuietZones静止区,是否绘画二维码的空白边框区域,默认为true

      使用方法,我们在MVC中使用,所以先创建一个MVC的项目,并在MVC的Home中设置二维码的内容,保存的地址以及文件的名称信息。

private readonly IHostingEnvironment _hostingEnvironment;  
public HomeController(IHostingEnvironment hostingEnvironment)
{
    _hostingEnvironment = hostingEnvironment;
}

public IActionResult Index()
{
    string content = "https://www.aspnetcore.vip";
    string path = _hostingEnvironment.ContentRootPath + "/QrCode";
    string name = "Test1";

    string filePath = QrCodeHelper.Generator(content, path, name);

    return View();
}

       运行程序,我们可以在项目的根路径中找到QrCode文件件,里面就已经生成了我们制定内容的二维码了。

Test1.png

分享到: 网站分享代码

发表评论

快捷回复:

评论列表 (暂无评论,253人围观)参与讨论

还没有评论,来说两句吧...