C#中利用QRCoder包生成二维码并显示
Posted lfq761204
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中利用QRCoder包生成二维码并显示相关的知识,希望对你有一定的参考价值。
一、通过NuGet向工程文件引入QRCoder包。
当前QRCoder包的最新版本为1.4.1。如果直接通过VS软件的NuGet管理器下载QRCoder包,速度非常慢,而且很容易失败。强烈推荐通过NuGet网站使用迅雷等工具下载,在网站https://www.nuget.org/首页搜索框搜索"QRCoder",点击打开搜索到的第1条记录”QRCoder“进入详情页面,页面右侧有”Download package“下载链接,用工具下载即可。将下载的QRCoder包放入NuGet管理器设置的本地包文件夹内,按提示安装。
二、生成二维码图像的核心代码
using System.Web;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using QRCoder;
namespace MyQRCoder{
public class MyQRCoder{
public Bitmap GetQRCodeImage(string qrCode) { //获取含水印的二维码图像对象
QRCodeGenerator generator = new QRCodeGenerator();
QRCodeData data = generator.CreateQrCode(qrCode,QRCodeGenerator.ECCLevel.M); //qrCode是二维码内容,ECCLevel用于设置容错率
QRCode code = new QRCode(data);
Bitmap icon = new Bitmap("水印文件路径");
//定义二维码中央水印图标,文件路径一定要是绝对路径,如果是Web工程,可用Server.MapPath函数获取绝对路径
Bitmap qrImage = code.GetGraphic(10,Color.Black,Color.White,icon,15,6,true);
//获得含水印的二维码图像信息,如不需要水印可以调用另外函数:Bitmap qrImage = code.GetGraphic(10);
return qrImage;
}
//在WinForm窗体的PictureBox控件中显示:
private void Form1_Load(object sender,EventArgs e) {
pictureBox1.Image=GetQRCodeImage("https://blog.csdn.net/");
}
//在MVC项目中显示,在控制器中写入代码:
public FileResult ShowQRCode() {
Bitmap img = GetQRCodeImage("https://blog.csdn.net/");
MemoryStream ms = new MemoryStream();
img.Save(ms,ImageFormat.Jpeg); //将二维码图像信息写入流
return new FileContentResult(ms.ToArray(),"image/jpg");
}
//在View视图中写入代码:<img src="@Url.Action("ShowQRCode")" />
}
}
三、QRCode.GetGraphic方法详解:
/*
public Bitmap GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor, [Bitmap icon=null], [int iconSizePercent=15], [int iconBorderWidth=6], [bool drawQuietZones=true])
int pixelsPerModule:生成二维码图片的像素大小;
Color darkColor:二维码图像暗色,一般设置为Color.Black;
Color lightColor:二维码图像亮色, 一般设置为Color.White;
Bitmap icon:二维码中间水印图标,如果是web工程,文件路径一定要转为绝对路径,默认为NULL;
int iconSizePercent:水印图标的大小比例;
int iconBorderWidth:水印图标的边框。不能设为0,否则会显示“参数错误”,程序运行出错。
bool drawQuietZones:静止区,即是否绘画二维码的空白边框区域,默认为true。
还有3个不加载水印图片的重载函数:
public Bitmap GetGraphic(int pixelsPerModule)
public Bitmap GetGraphic(int pixelsPerModule, string darkColorhtmlHex, string lightColorHtmlHex, [bool drawQuietZones = True])
public Bitmap GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor, [bool drawQuietZones = True])
*/
以上是关于C#中利用QRCoder包生成二维码并显示的主要内容,如果未能解决你的问题,请参考以下文章