分享一个.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()作用是把相对路径转为实际的目录路径,大家可以自己封装,这类简单方法就不发出来了。

相关文章
|
4月前
|
API 网络安全 数据安全/隐私保护
.NET邮箱API发送邮件的方法有哪些
本文介绍了.NET开发中使用邮箱API发送邮件的方法,包括SmtpClient类发送邮件、MailMessage类创建邮件消息、设置SmtpClient属性、同步/异步发送、错误处理、发送HTML格式邮件、带附件邮件以及多人邮件。AokSend提供高触达发信服务,适用于大规模验证码发送场景。了解这些技巧有助于开发者实现高效、可靠的邮件功能。
|
4月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
73 0
|
4月前
|
中间件 Go 开发者
Go net http包
Go net http包
52 0
|
27天前
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
|
1月前
|
开发框架 .NET Linux
2款高效的.NET二维码生成类库
2款高效的.NET二维码生成类库
|
27天前
|
程序员 数据库
分享 2 个 .NET EF 6 只更新某些字段的方法
分享 2 个 .NET EF 6 只更新某些字段的方法
|
27天前
|
数据库
分享一个 .NET EF 6 扩展 Where 的方法
分享一个 .NET EF 6 扩展 Where 的方法
|
27天前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
27天前
|
开发框架 中间件 .NET
分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
分享 ASP.NET Core Web Api 中间件获取 Request Body 两个方法
|
28天前
|
开发框架 .NET API
如何在 ASP.NET Core Web API 方法执行前后 “偷偷“ 作一些 “坏“ 事?初识 ActionFilterAttribute
如何在 ASP.NET Core Web API 方法执行前后 “偷偷“ 作一些 “坏“ 事?初识 ActionFilterAttribute