分享一个.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月前
|
编解码 JSON 网络协议
Golang 语言使用标准库 net/rpc/jsonrpc 包跨语言远程调用
Golang 语言使用标准库 net/rpc/jsonrpc 包跨语言远程调用
62 0
|
1天前
|
Go 开发者
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第24天】Go语言的`net/http`包在HTTP客户端编程中扮演重要角色,但使用时需注意几个常见问题:1) 检查HTTP状态码以确保请求成功;2) 记得关闭响应体以防止资源泄漏;3) 设置超时限制,避免长时间等待;4) 根据需求处理重定向。理解这些细节能提升HTTP客户端编程的效率和质量。
11 1
|
6月前
|
Windows
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
595 0
|
8月前
|
网络协议 Linux Go
i/o timeout , 希望你不要踩到这个net/http包的坑
i/o timeout , 希望你不要踩到这个net/http包的坑
61 0
|
JSON 前端开发 测试技术
记录一次net.sf.json包下面的JSONObject类踩到的坑
记录一次net.sf.json包下面的JSONObject类踩到的坑
374 0
|
中间件 Go 网络架构
Go 语言入门很简单:net/http 包
Go 语言提供功能丰富的 net/http,实现了基础的 HTTP 中的 client 和 server 功能。在这一篇文章也有介绍一个基础的 HelloWorld 应用。
|
Docker 容器
docker启动.NET3.1与5.0的包
docker启动.NET3.1与5.0的包
131 0
|
网络协议 算法 Java
【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api
【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api
133 0
|
安全
.NET 6新新东西--nuget包验证
.NET 6新新东西--nuget包验证
173 0
|
Web App开发 Go
Go基础学习记录 - 编写Web应用程序 - 使用net/http包来构建Web应用
转载的地址 Go基础学习记录 - 编写Web应用程序 - 使用net/http包来构建Web应用 使用net/http来构建Web应用 要使用net/http包,必须导入: import (     "fmt"     "io/ioutil"     "net/http" // 注意这里 ) 让我们创建一个允许用户查看Wiki页面的处理程序viewHandler。
903 0