最新使用C#生成二维码方案,详解及实例 ( QRCoder )

互联网 18-7-26
不知道大家有制作多二维码吗?本篇文章我将给大家介绍如何用C#生成二维码,先说一下生成二维码需要的三个类QRCodeGenerator、QRCodeData、QRCode。供后面好理解。他们的 职责 分别是什么呢?QRCodeGenerator :用来通过指定的方式生成二维码存储的数据对象,也就是 QRCodeData 二维码中间的 Matrix,之后 QRCode 得到 QRCodeData 并生成二维码

二维码

1.前言

最近在搞二维码方面的一些东西,所以接触了一些二维码相关,那么既然用过了就要有用过了的样子

其实关于二维码的文章真的多的数不胜数,有很多写的很认真,很好,但这就像是学习一样,别人会不代表自己就没有学习和记录的价值,所以说学习不在早晚

引入包

1.通过NuGet引入QRCoder

a)首先,我们新建一个 类库 项目,这里命名为 chestnut_qrcode

b)之后通过 NuGet 引入 QRCoder

c)见图操作

d)安装成功后,项目引用中就会出现 QRCoder 的引用

e)这时候引入工作已经完成,不过可以顺手创建一个 Encoder.cs 静态公共类

二维码生成类

1.前期准备

这里先说一下生成二维码需要的三个类:

  • QRCodeGenerator

  • QRCodeData

  • QRCode

他们的 职责 分别是什么呢?

QRCodeGenerator :用来通过指定的方式生成二维码存储的数据对象,也就是 QRCodeData 二维码中间的 Matrix,之后 QRCode 得到 QRCodeData 并生成二维码

2.编码

Encoder.cs 全部代码如下:

using System.Drawing;  namespace chestnut_qrcode {     /// <summary>     /// 二维码编码器     /// </summary>     public static class Encoder     {         /// <summary>         /// 生成二维码         /// </summary>         /// <param name="msg">信息</param>         /// <param name="version">版本 1 ~ 40</param>         /// <param name="pixel">像素点大小</param>         /// <param name="icon_path">图标路径</param>         /// <param name="icon_size">图标尺寸</param>         /// <param name="icon_border">图标边框厚度</param>         /// <param name="white_edge">二维码白边</param>         /// <returns>位图</returns>         public static Bitmap code(string msg, int version, int pixel, string icon_path, int icon_size, int icon_border, bool white_edge)         {              QRCoder.QRCodeGenerator code_generator = new QRCoder.QRCodeGenerator();              QRCoder.QRCodeData code_data = code_generator.CreateQrCode(msg, QRCoder.QRCodeGenerator.ECCLevel.M/* 这里设置容错率的一个级别 */, true, true, QRCoder.QRCodeGenerator.EciMode.Utf8, version);              QRCoder.QRCode code = new QRCoder.QRCode(code_data);              Bitmap icon = new Bitmap(icon_path);              Bitmap bmp = code.GetGraphic(pixel, Color.Black, Color.White, icon, icon_size, icon_border, white_edge);              return bmp;          }     } }

容错率与 version 之间的参数都与编码格式有关系,有些格式是不支持中文的哦

准备Form

1.外观

这里seaconch使用的是 winform 项目,直接截个图吧

2.代码

using System; using System.Drawing; using System.Windows.Forms;  namespace chestnut_form {     public partial class frm_qrcode : Form     {         public frm_qrcode()         {             InitializeComponent();         }          // 窗体加载         private void frm_qrcode_Load(object sender, EventArgs e)         {             cb_version.SelectedIndex = 1;              cb_pixel.SelectedIndex = 0;              cb_icon_size.SelectedIndex = 0;              cb_icon_border.SelectedIndex = 1;         }          // 编码         private void btn_encode_Click(object sender, EventArgs e)         {             int version = Convert.ToInt16(cb_version.Text);              int pixel = Convert.ToInt16(cb_pixel.Text);              string str_msg = tb_msg.Text;              int int_icon_size = Convert.ToInt16(cb_icon_size.Text);              int int_icon_border = Convert.ToInt16(cb_icon_border.Text);              bool b_we = rb_we_y.Checked ? true : false;              Bitmap bmp = chestnut_qrcode.Encoder.code(str_msg, version, pixel, "E:/seaconch/git/1.jpg", int_icon_size, int_icon_border, b_we);              pb_qrcode.Image = bmp;         }          // 保存         private void btn_save_Click(object sender, EventArgs e)         {             if (pb_qrcode.Image != null)                  using (SaveFileDialog sfd = new SaveFileDialog())                 {                     sfd.Filter = "(*.png)|*.png|(*.bmp)|*.bmp";                      if (sfd.ShowDialog() == DialogResult.OK) pb_qrcode.Image.Save(sfd.FileName);                  }         }     } }

看下C#二维码生成效果

相关文章:

【c#教程】C# 数据类型

相关视频:

极客学院C#视频教程

以上就是最新使用C#生成二维码方案,详解及实例 ( QRCoder )的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: c#
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:仪器设备改造技术,实现测量数据上传到服务器的功能

相关资讯