在现在的项目中,较多的使用到二维码,前面介绍过一篇使用Gma生成二维码的操作,现在介绍一个第三方组件,主要介绍生成二维码,二维码的解析,以及对二维码的相关信息的选择,现在介绍ThoughtWorks用于生成二维码,本随笔采用.net4.5和C#6.0语法,也可以进行查看ThoughtWorks的底层源码。

1.生成二维码:

  1. /// <summary>
  2. /// 生成二维码
  3. /// </summary>
  4. /// <param name="content">带生成二维码的字符串</param>
  5. /// <param name="path">路径</param>
  6. /// <returns></returns>
  7. public static string CreatehoughtWorksQrCode(string content, string path)
  8. {
  9. if (string.IsNullOrEmpty(content))
  10. {
  11. throw new ArgumentNullException(content);
  12. }
  13. if (string.IsNullOrEmpty(path))
  14. {
  15. throw new ArgumentNullException(path);
  16. }
  17. var qrCodeEncoder = new QRCodeEncoder
  18. {
  19. QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE,
  20. QRCodeScale = ,
  21. QRCodeVersion = ,
  22. QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M
  23. };
  24. Image image = qrCodeEncoder.Encode(content);
  25. var filename = DateTime.Now.ToString("yyyymmddhhmmssfff") + ".jpg";
  26. var filepath = string.Format("{0}{1}", path, filename);
  27. FileStream fs = null;
  28. try
  29. {
  30. fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write);
  31. image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
  32. }
  33. catch (IOException ex)
  34. {
  35. throw new IOException(ex.Message);
  36. }
  37. finally
  38. {
  39. if (fs != null) fs.Close();
  40. image.Dispose();
  41. }
  42. return CodeDecoder(filepath);
  43. }

2.解析二维码:

  1. /// <summary>
  2. /// 二维码解码
  3. /// </summary>
  4. /// <param name="filePath">图片路径</param>
  5. /// <returns></returns>
  6. public static string CodeDecoder(string filePath)
  7. {
  8. if (string.IsNullOrEmpty(filePath))
  9. {
  10. throw new ArgumentNullException(filePath);
  11. }
  12. try
  13. {
  14. if (!System.IO.File.Exists(filePath))
  15. return null;
  16. var myBitmap = new Bitmap(Image.FromFile(filePath));
  17. var decoder = new QRCodeDecoder();
  18. var decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap));
  19. return decodedString;
  20. }
  21. catch (Exception ex)
  22. {
  23. throw new Exception(ex.Message);
  24. }
  25. }

3.选择生成的二维码参数:

  1. /// <summary>
  2. /// 选择生成二维码的相关类型
  3. /// <param name="strData">要生成的文字或者数字,支持中文。如: "4408810820 深圳-广州" 或者:4444444444</param>
  4. /// <param name="qrEncoding">三种尺寸:BYTE ,ALPHA_NUMERIC,NUMERIC</param>
  5. /// <param name="level">大小:L M Q H</param>
  6. /// <param name="version">版本:如 8</param>
  7. /// <param name="scale">比例:如 4</param>
  8. /// <returns></returns>
  9. /// </summary>
  10. public void CreateCode_Choose(string strData, string qrEncoding, string level, int version, int scale)
  11. {
  12. var qrCodeEncoder = new QRCodeEncoder();
  13. var encoding = qrEncoding;
  14. switch (encoding)
  15. {
  16. case "Byte":
  17. qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
  18. break;
  19. case "AlphaNumeric":
  20. qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
  21. break;
  22. case "Numeric":
  23. qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
  24. break;
  25. default:
  26. qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
  27. break;
  28. }
  29.  
  30. qrCodeEncoder.QRCodeScale = scale;
  31. qrCodeEncoder.QRCodeVersion = version;
  32. switch (level)
  33. {
  34. case "L":
  35. qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
  36. break;
  37. case "M":
  38. qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
  39. break;
  40. case "Q":
  41. qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
  42. break;
  43. default:
  44. qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;
  45. break;
  46. }
  47. Image image = null;
  48. FileStream fs = null;
  49. try
  50. {
  51. //文字生成图片
  52. image = qrCodeEncoder.Encode(strData);
  53. var filename = DateTime.Now.ToString("yyyymmddhhmmssfff") + ".jpg";
  54. var filepath = HttpContext.Current.Server.MapPath(@"~\Upload") + "\\" + filename;
  55. fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write);
  56. image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
  57. }
  58. catch (IOException ex)
  59. {
  60. throw new IOException(ex.Message);
  61. }
  62. finally
  63. {
  64. if (fs != null) fs.Close();
  65. if (image != null) image.Dispose();
  66. }
  67. }

C#运用ThoughtWorks生成二维码的更多相关文章

  1. ThoughtWorks.QRCode生成二维码

    首先引用需要的dll,此处使用的是ThoughtWorks.QRCode.dll,网上可以找到对应的,此处也有一份,点击下载 http://files.cnblogs.com/files/ives/T ...

  2. 如何利用ThoughtWorks.QRCode 生成二维码

    1.引用ThoughtWorks.QRCode.dll 在nuget上查找即可引用,也可自行下载 2.生成二维码静态方法 参数: 二维码内容:fileUrl 二维码图片名:typeName #regi ...

  3. ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)

    最近做项目遇到生成二维码的问题,发现网上用的最多的是ThoughtWorks.QRCode和QrCode.Net两种方式.访问官网看着例子写了两个Demo,使用过程中发现两个都挺好用的,Thought ...

  4. 使用ThoughtWorks.QRCode生成二维码

    新建Windows应用程序,加入引用ThoughtWorks.QRCode.dll,编写代码生成二维码. using System; using System.Drawing; using Syste ...

  5. ThoughtWorks.QRCode 生成二维码名片(实现二维码内容换行)

    最近在写一个很简单的功能,按照Vcard的格式,生成二维码名片.本来以为分分钟完事的事情,替换数据,直接调用dll去生成二维码. 测试时,发现生成的二维码使用微信扫描得到的名片信息为空,反向解析发现, ...

  6. C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)

    用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法: 1):通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现 1.1):首先 ...

  7. C#生成二维码的方法

    本文实例讲述了C#生成二维码的方法.分享给大家供大家参考.具体实现方法如下: 首先引用ThoughtWorks.QRCode.dll 具体代码如下: 复制代码 代码如下: using System; ...

  8. 如何用.NET生成二维码?

    二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,国外对二维码技术的研究始于20世纪80年代末,在二维码符号表示技术研究方面已研制出多种码制,常见的有P ...

  9. C# Qrcode生成二维码支持中文,带图片,带文字 2015-01-22 15:11 616人阅读 评论(1) 收藏

    1.下载Qrcode库源码,下载地址:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 2.打开源码时,部分类库 ...

随机推荐

  1. 内存不足时,调用ajax报的错

    在error中遍历出来的异常   很难见

  2. ThinkPHP5 与 ThinkPHP3.* 之间的使用差异

    因为研究TP5时间不是很长,暂时先列以下几处差异: 1.过去的单字母函数已完全被替换掉,如下: S=>cache,C=>config,M/D=>model,U=>url,I=& ...

  3. JavaScript资源大全中文版(Awesome最新版--转载自张果老师博客)

    JavaScript资源大全中文版(Awesome最新版)   目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框 ...

  4. 【开源】MQTT推送服务器——zer0MqttServer(Java编写)

    目录 说明 功能 如何使用 参考帮助 说明 重要的放前面:V1.0版本是一个非常基础的版本,除了完整的MQTT协议实现外,其他功能什么都没做. MQTT 协议是 IBM 开发的即时通讯协议,相对于 I ...

  5. HTML学习有感

    自从到大三之后一直在纠结课下去学些什么,刚开始一直在学PS,当时学的还算可以,可以一段时间不用之后就忘记了,这使我很郁闷!之后一直想学JAVA,跟已经工作的同学讨来了相关的视屏资料以及他培训时的笔记: ...

  6. WebView解析

    WebView解析   WebView是一个基于Webkit的,相当于内置浏览器的强大功能的组件,WebView的使用这么分四步说明:添加组件,加载资源,属性设置,辅助功能. 一.WebView的添加 ...

  7. 玩转SQL Server复制回路の变更数据类型、未分区表转为分区表

    玩转SQL Server复制回路の变更数据类型.未分区表转为分区表 复制的应用: 初级应用:读写分离.数据库备份 高级应用:搬迁大型数据库(跨机房).变更数据类型.未分区表转为分区表 京东的复制专家 ...

  8. Nova PhoneGap框架 第二章 理解index.html

    跟绝大多数PhoneGap程序一样,Index.html是程序的入口.这个页面应该完成应用程序的初始化工作. 首先,让我们来看看这个页面通常都长什么样子: 下面我将一一解释这个页面都做了哪些初始化工作 ...

  9. clojure基础入门(一)

    最近在看storm的源码,就学习分享下clojure语法. 阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上的Lisp方言,属于函数式编程范式,它和java可以 ...

  10. ArcGIS制作放射状流向地图(Radial Flow Map)

    流向地图火了,因为Facebook的那张著名的友邻图,抑或因为<数据可视化之美>中介绍飞行模式的航线图,总之,流向地图以它特殊的可视化形式,直观地展示事物之间的联系,尤其在展示网络流向.贸 ...