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管理器设置的本地包文件夹内,按提示安装。

下载qrcoder.1.4.1.nupkg

二、生成二维码图像的核心代码

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包生成二维码并显示的主要内容,如果未能解决你的问题,请参考以下文章

C# 代码生成二维码方法及代码示例(QRCoder)

C# 代码生成二维码方法及代码示例(QRCoder)

Asp.Net Core 生成二维码(NuGet使用QRCoder)

WPF 使用QRCoder生成二维码

QRCoder生成二维码

建议收藏备用:.net core使用QRCoder生成普通二维码和带Logo的二维码详细使用教程,源码已更新至开源模板