C#运用ThoughtWorks生成二维码
在现在的项目中,较多的使用到二维码,前面介绍过一篇使用Gma生成二维码的操作,现在介绍一个第三方组件,主要介绍生成二维码,二维码的解析,以及对二维码的相关信息的选择,现在介绍ThoughtWorks用于生成二维码,本随笔采用.net4.5和C#6.0语法,也可以进行查看ThoughtWorks的底层源码。
1.生成二维码:
- /// <summary>
- /// 生成二维码
- /// </summary>
- /// <param name="content">带生成二维码的字符串</param>
- /// <param name="path">路径</param>
- /// <returns></returns>
- public static string CreatehoughtWorksQrCode(string content, string path)
- {
- if (string.IsNullOrEmpty(content))
- {
- throw new ArgumentNullException(content);
- }
- if (string.IsNullOrEmpty(path))
- {
- throw new ArgumentNullException(path);
- }
- var qrCodeEncoder = new QRCodeEncoder
- {
- QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE,
- QRCodeScale = ,
- QRCodeVersion = ,
- QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M
- };
- Image image = qrCodeEncoder.Encode(content);
- var filename = DateTime.Now.ToString("yyyymmddhhmmssfff") + ".jpg";
- var filepath = string.Format("{0}{1}", path, filename);
- FileStream fs = null;
- try
- {
- fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write);
- image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
- }
- catch (IOException ex)
- {
- throw new IOException(ex.Message);
- }
- finally
- {
- if (fs != null) fs.Close();
- image.Dispose();
- }
- return CodeDecoder(filepath);
- }
2.解析二维码:
- /// <summary>
- /// 二维码解码
- /// </summary>
- /// <param name="filePath">图片路径</param>
- /// <returns></returns>
- public static string CodeDecoder(string filePath)
- {
- if (string.IsNullOrEmpty(filePath))
- {
- throw new ArgumentNullException(filePath);
- }
- try
- {
- if (!System.IO.File.Exists(filePath))
- return null;
- var myBitmap = new Bitmap(Image.FromFile(filePath));
- var decoder = new QRCodeDecoder();
- var decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap));
- return decodedString;
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
3.选择生成的二维码参数:
- /// <summary>
- /// 选择生成二维码的相关类型
- /// <param name="strData">要生成的文字或者数字,支持中文。如: "4408810820 深圳-广州" 或者:4444444444</param>
- /// <param name="qrEncoding">三种尺寸:BYTE ,ALPHA_NUMERIC,NUMERIC</param>
- /// <param name="level">大小:L M Q H</param>
- /// <param name="version">版本:如 8</param>
- /// <param name="scale">比例:如 4</param>
- /// <returns></returns>
- /// </summary>
- public void CreateCode_Choose(string strData, string qrEncoding, string level, int version, int scale)
- {
- var qrCodeEncoder = new QRCodeEncoder();
- var encoding = qrEncoding;
- switch (encoding)
- {
- case "Byte":
- qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
- break;
- case "AlphaNumeric":
- qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
- break;
- case "Numeric":
- qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
- break;
- default:
- qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
- break;
- }
- qrCodeEncoder.QRCodeScale = scale;
- qrCodeEncoder.QRCodeVersion = version;
- switch (level)
- {
- case "L":
- qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
- break;
- case "M":
- qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
- break;
- case "Q":
- qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
- break;
- default:
- qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;
- break;
- }
- Image image = null;
- FileStream fs = null;
- try
- {
- //文字生成图片
- image = qrCodeEncoder.Encode(strData);
- var filename = DateTime.Now.ToString("yyyymmddhhmmssfff") + ".jpg";
- var filepath = HttpContext.Current.Server.MapPath(@"~\Upload") + "\\" + filename;
- fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write);
- image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
- }
- catch (IOException ex)
- {
- throw new IOException(ex.Message);
- }
- finally
- {
- if (fs != null) fs.Close();
- if (image != null) image.Dispose();
- }
- }
C#运用ThoughtWorks生成二维码的更多相关文章
- ThoughtWorks.QRCode生成二维码
首先引用需要的dll,此处使用的是ThoughtWorks.QRCode.dll,网上可以找到对应的,此处也有一份,点击下载 http://files.cnblogs.com/files/ives/T ...
- 如何利用ThoughtWorks.QRCode 生成二维码
1.引用ThoughtWorks.QRCode.dll 在nuget上查找即可引用,也可自行下载 2.生成二维码静态方法 参数: 二维码内容:fileUrl 二维码图片名:typeName #regi ...
- ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
最近做项目遇到生成二维码的问题,发现网上用的最多的是ThoughtWorks.QRCode和QrCode.Net两种方式.访问官网看着例子写了两个Demo,使用过程中发现两个都挺好用的,Thought ...
- 使用ThoughtWorks.QRCode生成二维码
新建Windows应用程序,加入引用ThoughtWorks.QRCode.dll,编写代码生成二维码. using System; using System.Drawing; using Syste ...
- ThoughtWorks.QRCode 生成二维码名片(实现二维码内容换行)
最近在写一个很简单的功能,按照Vcard的格式,生成二维码名片.本来以为分分钟完事的事情,替换数据,直接调用dll去生成二维码. 测试时,发现生成的二维码使用微信扫描得到的名片信息为空,反向解析发现, ...
- C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)
用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法: 1):通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现 1.1):首先 ...
- C#生成二维码的方法
本文实例讲述了C#生成二维码的方法.分享给大家供大家参考.具体实现方法如下: 首先引用ThoughtWorks.QRCode.dll 具体代码如下: 复制代码 代码如下: using System; ...
- 如何用.NET生成二维码?
二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,国外对二维码技术的研究始于20世纪80年代末,在二维码符号表示技术研究方面已研制出多种码制,常见的有P ...
- C# Qrcode生成二维码支持中文,带图片,带文字 2015-01-22 15:11 616人阅读 评论(1) 收藏
1.下载Qrcode库源码,下载地址:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 2.打开源码时,部分类库 ...
随机推荐
- 内存不足时,调用ajax报的错
在error中遍历出来的异常 很难见
- ThinkPHP5 与 ThinkPHP3.* 之间的使用差异
因为研究TP5时间不是很长,暂时先列以下几处差异: 1.过去的单字母函数已完全被替换掉,如下: S=>cache,C=>config,M/D=>model,U=>url,I=& ...
- JavaScript资源大全中文版(Awesome最新版--转载自张果老师博客)
JavaScript资源大全中文版(Awesome最新版) 目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框 ...
- 【开源】MQTT推送服务器——zer0MqttServer(Java编写)
目录 说明 功能 如何使用 参考帮助 说明 重要的放前面:V1.0版本是一个非常基础的版本,除了完整的MQTT协议实现外,其他功能什么都没做. MQTT 协议是 IBM 开发的即时通讯协议,相对于 I ...
- HTML学习有感
自从到大三之后一直在纠结课下去学些什么,刚开始一直在学PS,当时学的还算可以,可以一段时间不用之后就忘记了,这使我很郁闷!之后一直想学JAVA,跟已经工作的同学讨来了相关的视屏资料以及他培训时的笔记: ...
- WebView解析
WebView解析 WebView是一个基于Webkit的,相当于内置浏览器的强大功能的组件,WebView的使用这么分四步说明:添加组件,加载资源,属性设置,辅助功能. 一.WebView的添加 ...
- 玩转SQL Server复制回路の变更数据类型、未分区表转为分区表
玩转SQL Server复制回路の变更数据类型.未分区表转为分区表 复制的应用: 初级应用:读写分离.数据库备份 高级应用:搬迁大型数据库(跨机房).变更数据类型.未分区表转为分区表 京东的复制专家 ...
- Nova PhoneGap框架 第二章 理解index.html
跟绝大多数PhoneGap程序一样,Index.html是程序的入口.这个页面应该完成应用程序的初始化工作. 首先,让我们来看看这个页面通常都长什么样子: 下面我将一一解释这个页面都做了哪些初始化工作 ...
- clojure基础入门(一)
最近在看storm的源码,就学习分享下clojure语法. 阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上的Lisp方言,属于函数式编程范式,它和java可以 ...
- ArcGIS制作放射状流向地图(Radial Flow Map)
流向地图火了,因为Facebook的那张著名的友邻图,抑或因为<数据可视化之美>中介绍飞行模式的航线图,总之,流向地图以它特殊的可视化形式,直观地展示事物之间的联系,尤其在展示网络流向.贸 ...