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])
*/

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值