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文件加载图片文件,在页面中获取地址,可以在页面中显示二维码资质。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JackeyGao的博客

Django 进阶学习 - 动态actions

Django后台默认只有一个动作Delete selected xxxxs, 那么如果自定义动作该怎么办, 也很容易, 直接写个类似于这种的函数

802
来自专栏葡萄城控件技术团队

七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递

通过第一天的学习之后,我们相信您已经对MVC有一些基本了解。 本节所讲的内容是在上节的基础之上,因此需要确保您是否掌握了上一节的内容。本章的目标是在今天学习结束...

1808
来自专栏葡萄城控件技术团队

扩展GridView控件——为内容项添加拖放及分组功能

引言 相信大家对GridView都不陌生,是非常有用的控件,用于平铺有序的显示多个内容项。打开任何WinRT应用或者是微软合作商的网站,都会在APP中发现Gri...

2675
来自专栏技术博客

MVC项目开发中那些用到的知识点(Jquery ajax提交Json后台处理)

  jQuery提供的ajax方法能很方便的实现客户端与服务器的异步交互,在asp.net mvc 框架使用jQuery能很方便地异步获取提交数据,给用户提供更...

992
来自专栏函数式编程语言及工具

Scalaz(38)- Free :Coproduct-Monadic语句组合

   很多函数式编程爱好者都把FP称为Monadic Programming,意思是用Monad进行编程。我想FP作为一种比较成熟的编程模式,应该有一套比较规范...

17710
来自专栏Kotlin源码阅读

Kotlin源码阅读——system模块

在kotlin的源码目录里,每个模块都有相应的md文件,做以说明。在kotlin最主要的stdlin/src目录下有一个Module.md:

903
来自专栏跟着阿笨一起玩NET

添加引用方式抛出和捕获干净的WebService异常

说明:【干净】指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”。

461
来自专栏c#开发者

如何在DataGrid里面产生滚动条而不滚动题头

我们在开发的时候一定遇到,使用DataGrid的时候由于不想分页(数据没有那么多)但是又显示不在一页里面,此时我们希望在DataGrid里面出现一个滚动条,可以...

33111
来自专栏汇智网教程

web3.eth.sign

2797
来自专栏AhDung

【C#】添加引用方式抛出和捕获干净的WebService异常

说明:【干净】指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”。

493

扫码关注云+社区