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

举报
鹅是程序猿 发表于 2023/04/13 14:50:40 2023/04/13
【摘要】 最近项目中需要生成二维码,找了很多包,最好还是感觉QRCoder包最好用,下面发出来分享给大家。1、首先nugut应用QRCoder包。2、在工具层中创建QRCoderHelper.cs文件,内容如下:/// <summary>/// 依赖QRCoder/// </summary>public class QRCoderHelper{#region 普通二维码/// <summary>///...

最近项目中需要生成二维码,找了很多包,最好还是感觉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()作用是把相对路径转为实际的目录路径,大家可以自己封装,这类简单方法就不发出来了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。