• C#运用GmaQrCode生成二维码


        项目中需要生成二维码,方法比较多,可以采用JS插件,也可以采用第三方插件后台生成二维码,在后台方法中可以采用QRCode或者GmaQrCode,现在介绍一种C#在后台生成二维码的方法:

       

            /// <summary>
            /// 获取二维码
            /// </summary>
            /// <param name="codeString">编码字符</param>
            /// <returns>二维码地址</returns>
            public static string ReturnGmaQrCode(string codeString)
            {
                try
                {
                    using (var ms = new MemoryStream())
                    {
                        //const string stringtest = "中国inghttp://www.baidu.com/mvc.test?&";
                        if (string.IsNullOrEmpty(codeString))
                        {
                            throw new ArgumentNullException(codeString);
                        }
                        var stringtest = codeString;
                        CreateGmaQrCodeHelper(stringtest, ms);
                        var img = Image.FromStream(ms);
                        var filename = DateTime.Now.ToString("yyyymmddhhmmss");
                        var path = HttpContext.Current.Server.MapPath("~/image/") + filename + ".png";
                        img.Save(path);
                        return path;
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
    
            }
    
            /// <summary>
            /// 获取二维码
            /// </summary>
            /// <param name="strContent">待编码的字符</param>
            /// <param name="ms">输出流</param>
            ///<returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns>
            public static bool CreateGmaQrCodeHelper(string strContent, MemoryStream ms)
            {
                try
                {
                    //误差校正水平
                    const ErrorCorrectionLevel ecl = ErrorCorrectionLevel.M;
                    //待编码内容
                    var content = strContent;
                    //空白区域
                    const QuietZoneModules quietZones = QuietZoneModules.Two;
                    //大小
                    const int moduleSize = 12;
                    var encoder = new QrEncoder(ecl);
                    QrCode qr;
                    //对内容进行编码,并保存生成的矩阵
                    if (encoder.TryEncode(content, out qr))
                    {
                        var render = new GraphicsRenderer(new FixedModuleSize(moduleSize, quietZones));
                        render.WriteToStream(qr.Matrix, ImageFormat.Png, ms);
                    }
                    else
                    {
                        return false;
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                return true;
            }

        在asp.net的项目中,将生成的二维码地址返回至当前方法。可以采用ashx文件加载图片文件,在页面中获取地址,可以在页面中显示二维码资质。

  • 相关阅读:
    CTF---隐写术入门第二题 小苹果
    文件上传
    文件读取
    sqlmap之绕过waf思路
    【小技巧分享】如何通过微博图片进行社工Po主
    Windows 11恢复传统右键菜单-2021.10.5正式版
    sql注入之Oracle注入
    CTF之buuctf
    常见sql注入payload
    信息收集之Github
  • 原文地址:https://www.cnblogs.com/pengze0902/p/5968023.html
Copyright © 2020-2023  润新知