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