文档章节

C#运用GmaQrCode生成二维码

彭泽0902
 彭泽0902
发布于 2016/11/24 18:47
字数 354
阅读 9
收藏 0

    项目中需要生成二维码,方法比较多,可以采用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文件加载图片文件,在页面中获取地址,可以在页面中显示二维码资质。

 

© 著作权归作者所有

共有 人打赏支持
彭泽0902
粉丝 0
博文 44
码字总数 57771
作品 0
武汉
高级程序员
私信 提问
C#开发微信门户及应用(32)--微信支付接入和API封装使用

在微信的应用上,微信支付是一个比较有用的部分,但也是比较复杂的技术要点,在微商大行其道的年代,自己的商店没有增加微信支付好像也说不过去,微信支付旨在为广大微信用户及商户提供更优质...

walb呀
2017/12/04
0
0
个性二维码--YcQrCode

由C#编写的个性二维码底层,已应用到 码晒客/疯狂创意二维码等项目上,并获得多项软件著作专利。 疯狂创意二维码 疯狂创意二维码是可用于生成风格独特的个性化二维码生成器,用户可以将目标信...

cheng5x
2014/06/08
2.8K
0
二维码在网站中的运用

二维码作为当前互联网的一大流行热点,各大站点均通过二维码这一方便快捷的方式推广各自的客户端、手机站、网站活动、自媒体推广等等等等,不胜枚举,二维码在互联网行业的运用日益广泛,网站...

zhangjiaxin
2013/12/19
4
0
[开源]C#二维码生成解析工具,可添加自定义Logo

  二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,...

雲霏霏
2015/03/04
0
0
FastReport.Mono发布2013版 新增二维码和Web报表生成器

FastReport.Mono 是一款为Mono Framework设计的功能全面的报表生成工具,可以应用于Windows,Linux,MacOS X以及任何支持Xamarin Mono的操作系统。最新发布的2013版可在Web服务器端生成报表,新...

rainhe
2012/12/03
47
0

没有更多内容

加载失败,请刷新页面

加载更多

Yearning基于Inception的开源SQL审核平台

基础环境: python3 nodejs vuejs mysql python-ldap pymysql mysql 新建数据库 create database Yearning DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; Navicat导入初始化数据 : ......

以谁为师
15分钟前
0
0
flutter Expanded用法

使用的地方:一个分类,类似京东的,左右两边都可以滑动 Widget build(BuildContext context) { return Row(children: [ Column( children: <Widget>[ Ex......

大灰狼wow
20分钟前
2
0
Java8 Map中新增的方法使用总结

前言 得益于 Java 8 的 default 方法特性,Java 8 对 Map 增加了不少实用的默认方法,像 getOrDefault, forEach, replace, replaceAll, putIfAbsent, remove(key, value), computeIfPresent,......

kaixin_code
30分钟前
2
0
@TransactionConfiguration

@TransactionConfiguration过时与替代写法 @TransactionConfiguration 替代写法

miaojiangmin
32分钟前
0
0
浅谈Vue响应式(数组变异方法)

很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法。 看来想让女...

开元中国2015
34分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部