分享一个.net 基于QRCoder包生成二维码的方法,

简介: 最近项目中需要生成二维码,找了很多包,最好还是感觉QRCoder包最好用,下面发出来分享给大家

最近项目中需要生成二维码,找了很多包,最好还是感觉QRCoder包最好用,下面发出来分享给大家。

1、首先nugut应用QRCoder包。

2、在工具层中创建QRCoderHelper.cs文件,内容如下:

    /// <summary>

    /// 依赖QRCoder

    /// </summary>

    public class QRCoderHelper

    {

    #region 普通二维码

    /// <summary>

    ///

    /// </summary>

    /// <param name="url">存储内容</param>

    /// <param name="pixel">像素大小</param>

    /// <returns></returns>

    public static Bitmap GetPTQRCode(string url, int pixel, string color = "#000000", string backColor = "#ffffff")

    {

    if (string.IsNullOrEmpty(url))

    {

    return null;

    }

    url = HttpUtility.UrlDecode(url);

    QRCodeGenerator generator = new QRCodeGenerator();

    QRCodeData codeData = generator.CreateQrCode(url, QRCodeGenerator.ECCLevel.M, true);

    QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData);

    ColorConverter colorConverter = new ColorConverter();

    Color darkColor;

    Color lightColor;

    if (string.IsNullOrEmpty(color) || !color.StartsWith("#"))

    {

    darkColor = Color.Black;

    }

    else

    {

    darkColor = (Color)colorConverter.ConvertFromString(color);

    }

    if (string.IsNullOrEmpty(backColor) || !backColor.StartsWith("#"))

    {

    lightColor = Color.White;

    }

    else

    {

    lightColor = (Color)colorConverter.ConvertFromString(backColor);

    }

    Bitmap qrImage = qrcode.GetGraphic(pixel, darkColor, lightColor, true);

    //Bitmap qrImage = qrcode.GetGraphic(pixel, Color.Black, Color.White, null, 15, 6, true);

    return qrImage;

    }

    #endregion

    #region 带logo的二维码

    /// <summary>

    ///

    /// </summary>

    /// <param name="url">存储内容</param>

    /// <param name="pixel">像素大小</param>

    /// <returns></returns>

    public static Bitmap GetLogoQRCode(string url, string logoPath, int pixel,string color="#000000",string backColor ="#ffffff")

    {

    if (string.IsNullOrEmpty(url))

    {

    return null;

    }

    url = HttpUtility.UrlDecode(url);

    QRCodeGenerator generator = new QRCodeGenerator();

    QRCodeData codeData = generator.CreateQrCode(url, QRCodeGenerator.ECCLevel.M, true);

    QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData);

    logoPath = IOHelper.MapPath(logoPath);

    Bitmap icon = new Bitmap(logoPath);

    ColorConverter colorConverter = new ColorConverter();

    Color darkColor;

    Color lightColor;

    if (string.IsNullOrEmpty(color) || !color.StartsWith("#"))

    {

    darkColor = Color.Black;

    }

    else

    {

    darkColor = (Color)colorConverter.ConvertFromString(color);

    }

    if (string.IsNullOrEmpty(backColor) || !backColor.StartsWith("#"))

    {

    lightColor = Color.White;

    }

    else

    {

    lightColor = (Color)colorConverter.ConvertFromString(backColor);

    }

    Bitmap qrImage = qrcode.GetGraphic(pixel, darkColor, lightColor, icon, 15, 6, true);

    #region 参数介绍

    //GetGraphic方法参数介绍

    //pixelsPerModule //生成二维码图片的像素大小 ,我这里设置的是5

    //darkColor //暗色 一般设置为Color.Black 黑色

    //lightColor //亮色 一般设置为Color.White 白色

    //icon //二维码 水印图标 例如:Bitmap icon = new Bitmap(context.Server.MapPath("~/images/zs.png")); 默认为NULL ,加上这个二维码中间会显示一个图标

    //iconSizePercent //水印图标的大小比例 ,可根据自己的喜好设置

    //iconBorderWidth // 水印图标的边框

    //drawQuietZones //静止区,位于二维码某一边的空白边界,用来阻止读者获取与正在浏览的二维码无关的信息 即是否绘画二维码的空白边框区域 默认为true

    #endregion

    return qrImage;

    }

    #endregion

    }

这其中IOHelper.MapPath()作用是把相对路径转为实际的目录路径,大家可以自己封装,这类简单方法就不发出来了。

相关文章
|
6月前
|
API 网络安全 数据安全/隐私保护
.NET邮箱API发送邮件的方法有哪些
本文介绍了.NET开发中使用邮箱API发送邮件的方法,包括SmtpClient类发送邮件、MailMessage类创建邮件消息、设置SmtpClient属性、同步/异步发送、错误处理、发送HTML格式邮件、带附件邮件以及多人邮件。AokSend提供高触达发信服务,适用于大规模验证码发送场景。了解这些技巧有助于开发者实现高效、可靠的邮件功能。
|
6月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
89 0
|
6月前
|
中间件 Go 开发者
Go net http包
Go net http包
60 0
|
3月前
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
|
30天前
|
开发框架 .NET 测试技术
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
本文介绍了 `.NET 9` 中新推出的 `Microsoft.AspNetCore.OpenApi` 包,该包旨在为 `ASP.NET Core` 应用程序生成 `OpenAPI` 文档。文章对比了 `NSwag` 和 `Swashbuckle.AspNetCore` 两大现有库,探讨了新包的优势和不足,特别是在性能和功能方面。尽管新包在某些方面尚不及成熟库完善,但其对原生 `AoT` 编译的支持和未来的扩展潜力使其成为一个值得考虑的选择。文章还提供了详细的性能测试数据和优化建议,适合对 `OpenAPI` 文档生成感兴趣的开发者阅读。
76 3
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
|
3月前
|
开发框架 .NET Linux
2款高效的.NET二维码生成类库
2款高效的.NET二维码生成类库
|
3月前
|
程序员 数据库
分享 2 个 .NET EF 6 只更新某些字段的方法
分享 2 个 .NET EF 6 只更新某些字段的方法
|
3月前
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
|
3月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
3月前
|
开发框架 中间件 .NET
分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
130 0

热门文章

最新文章

下一篇
无影云桌面