.net core使用QRCoder生成普通二维码和带Logo的二维码详细使用教程

您所在的位置:网站首页 问卷星生成的二维码怎么不带标志 .net core使用QRCoder生成普通二维码和带Logo的二维码详细使用教程

.net core使用QRCoder生成普通二维码和带Logo的二维码详细使用教程

2024-05-08 10:55| 来源: 网络整理| 查看: 265

随着互联网越来越生活化,二维码的使用越来越普遍,不论是扫码支付还是扫码关注引流,似乎我们总是离不开二维码,那么很多需要推广的文章或社区想要自己的二维码,那么你是不是需要在网站直接提供给用户呢?很多开发者就在网上百度解决方案,边做边踩坑,甚至很多人写的开发案例都是截图或者类库引用都没说清楚,在这个摸索的途中造成很多时间上的浪费。

尤其是尝试新技术那些旧的操作还会有所改变,为了节约开发时间,我们把解决方案收入到一个个demo中,方便以后即拿即用。而且这些demo有博客文档支持,帮助任何人非常容易上手开发跨平台的.net core。随着时间的推移,我们的demo库会日益强大请及时收藏GitHub。

一、首先在Common公用项目中引用QRCoder类库

Install-Package QRCoder -Version 1.3.3

二、在Common公用项目中创建QRCoderHelper类

复制代码 #region 普通二维码 /// /// /// /// 存储内容 /// 像素大小 /// public static Bitmap GetPTQRCode(string url, int pixel) { QRCodeGenerator generator = new QRCodeGenerator(); QRCodeData codeData = generator.CreateQrCode(url, QRCodeGenerator.ECCLevel.M, true); QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData); Bitmap qrImage = qrcode.GetGraphic(pixel, Color.Black, Color.White, true); return qrImage; } #endregion #region 带logo的二维码 /// /// /// /// 存储内容 /// 像素大小 /// public static Bitmap GetLogoQRCode(string url,string logoPath, int pixel) { QRCodeGenerator generator = new QRCodeGenerator(); QRCodeData codeData = generator.CreateQrCode(url, QRCodeGenerator.ECCLevel.M, true); QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData); Bitmap icon = new Bitmap(logoPath); Bitmap qrImage = qrcode.GetGraphic(pixel, Color.Black, Color.White, 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 复制代码

注意:如果你想做其它调整可以参考我第二个方法中的参数介绍进行设置,考虑到大家的难处,我把那些相关参数帮各位查了。

三、添加QRCodeController控制器处理请求并返回二维码图片

复制代码 private readonly IWebHostEnvironment webHostEnvironment; //private readonly IHostingEnvironment _hostingEnvironment; 3.0之前使用它 public QRCodeController(IWebHostEnvironment _webHostEnvironment) { webHostEnvironment=_webHostEnvironment; } public IActionResult Index() { return View(); } public IActionResult GetPTQRCode(string url, int pixel=5) { url = HttpUtility.UrlDecode(url); Response.ContentType = "image/jpeg"; var bitmap = QRCoderHelper.GetPTQRCode(url, pixel); MemoryStream ms = new MemoryStream(); bitmap.Save(ms, ImageFormat.Jpeg); return File(ms.ToArray(), "image/png"); } public IActionResult GetLogoQRCode(string url,string logoPath, int pixel = 5) { url = HttpUtility.UrlDecode(url); logoPath= webHostEnvironment.WebRootPath + HttpUtility.UrlDecode(logoPath); Response.ContentType = "image/jpeg"; var bitmap = QRCoderHelper.GetLogoQRCode(url, logoPath, pixel); MemoryStream ms = new MemoryStream(); bitmap.Save(ms, ImageFormat.Jpeg); return File(ms.ToArray(), "image/png"); } 复制代码

注意:其中IHostingEnvironment是.net core 3.0之前使用获取目录位置的,而我们.net core 3.0已经由IHostingEnvironment变更为IWebHostEnvironment来获取了。

四、前端请求设计

复制代码 $(function () { PTCreate(); LogoCreate(); }); function PTCreate() { pt = escape($("#PT").val());//防止中文等特殊字符引起问题 ptSize = $("#PTSize").val(); var id = document.getElementById("PTImg"); var str = "../QRCode/GetPTQRCode?url=" + pt + "&pixel=" + ptSize + "&random=" + Math.random(); id.setAttribute("src", str); } function LogoCreate() { logo = escape($("#Logo").val()); logoPath = escape($("#LogoPath").val()); logoSize = $("#LogoSize").val(); var id = document.getElementById("LogoImg"); var str = "../QRCode/GetLogoQRCode?url=" + logo + "&logoPath=" + logoPath + "&pixel=" + logoSize + "&random=" + Math.random(); id.setAttribute("src", str); } 普通二维码 生成 Logo二维码 生成 复制代码

五、那么看下效果吧

开源地址 动动小手,点个推荐吧!

 

注意:我们机遇屋该项目将长期为大家提供asp.net core各种好用demo,旨在帮助.net开发者提升竞争力和开发速度,建议尽早收藏该模板集合项目。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3