二维码生成小窍门

今天写一个生成二维码的小知识,也是在项目中遇到的一个问题,现在分享给大家:

我使用的是QRCoder包,在项目中右键找到管理NuGet程序包,进行下载即可;

下载完毕后开始编写代码程序:

在控制器中:
首先新建两个工具类;

  
 public static Bitmap GetCode(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;
        } 
     
//对图片进行解码(二维码背景图片)
 public static string ImgToBase64String(Bitmap bmp)
        {
            try
            {
                MemoryStream ms = new MemoryStream();
                bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] arr = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr, 0, (int)ms.Length);
                ms.Close();
                return Convert.ToBase64String(arr);
            }
            catch (Exception ex)
            {
                return null;
            }
        }

然后新建方法引用:

  public ActionResult GetGeneralizeUrl()
        {
            string userName = "11";  //这里我写的是11  那么扫描二维码返回的也是11.如果需要打开一个链接,那么直接在web.config中配置一个地址即可,若需要传值则?后接 (简单的链接传值) 
    string imgToBase64 = "data:image/png;base64," + ImgToBase64String(GetCode(userName ,7,6,WebConfigurationManager.AppSettings["icoImg"], 14, 1, false));
 //WebConfigurationManager.AppSettings["icoImg"]  这是我在web.config中配置的一个本地电脑中的一个图片地址
()用于作为背景图
            return Content(imgToBase64);  //返回值
        }

前台中:

<but­ton id=“GetBtn” class=“btn btn-w‑m btn-suc­cess” type=“button”>生成二维码</button>
<img id=“GeneralizeImg” src=“123” alt=“邀请二维码” />

JS中:

 $("#GetBtn").click(function () {
        $.ajax({
            url: "/CarsManage/GetGeneralizeUrl",
            type: "POST",
            success: function (data) {
               //  console.info(data);
                $("#GeneralizeImg").attr("src", data);
            },
        });
    });

为您推荐

发表评论

您的电子邮箱地址不会被公开。