使用Zint和Zxing实现二维码的编码与解码(Using open-source tools to generate and decode Q-R code)

1.Zint生成二维码

http://sourceforge.net/projects/zint/

【1】从上述站点下载Zint工具

【2】安装Zint工具

【3】使用Zint工具生成二维码,注意选择类型,并输入要生成的文本,此处我输入的是Hello World,Everyone!

【4】保存Q-R二维码图像

这样我们的Q-R二维码图像就保存成功了【保存为hello.png】。

2.使用Zxing进行解码

Zxing是大名鼎鼎的条码处理开源项目,提供了多个平台上各种标准条形码的生成与解码工具。

https://github.com/zxing

Zxing提供了Android,Java,IPhone,Objective-C,C++,Jruby,Qt, .NET等各个平台库,其内容十分庞大,这里就不主要介绍了。下面,我们利用Zxing提供的JRuby项目进行简单的解码操作,把刚才生成的二维码图片作为输入,看看能否得到预期的输出。

【1】安装JRuby

由于Zxing原生于Java,因此它提供的库是JRuby版本的,于是先安装JRuby。(之所以选用JRuby是因为它比较轻量级,简单好用)

http://jruby.org/ 安装JRuby非常简单,只需3步:

(1)下载Jruby zip包

(2)解压JRuby

(3)将Jruby下bin目录所在路径加入PATH环境变量

(4)完成(在cmd中输入jruby -v测试是否安装成功)

【2】安装Zxing for ruby

https://github.com/ecin/zxing.rb

打开cmd,输入jruby -S gem install zxing等待数秒,jruby会为我们装好zxing。此时,我们就可以在ruby代码中import zxing了!

【3】编写解码程序

解码程序非常简单,在刚才保存图片的文件夹下新建一个ruby文件【1.ruby】,程序代码只需3行:

1 require 'zxing'
2
3 result = ZXing.decode 'hello.png'
4
5 puts result

简单的说,就是调用Zxing中的decode方法,输入参数为同目录下的“hello.png"文件,并将输入保存在result中。

【4】执行解码程序

打开cmd,执行jruby 1.rb,其输出结果果然和我们输入时相同。

3.基于.NET的简单编解码工具

【1】下载Zxing.NET工具

http://zxingnet.codeplex.com/releases/view/117068

下载后,将其解压到任意位置,我们之后会用到其中的dll文件。

【2】在VS2013中建立winForm应用程序

【3】添加引用

添加引用时,请注意对应版本!!!选择对应版本的zxing.dll,将其加入到引用当中。

【4】设计GUI界面

这里就展示一下,详细请下载工程代码(附件)

(1)输入文本,点击Generate,生成QR-Code

(2)点击Save,选择路径,保存QR-Code

(3)点击Decoding,选择相应的QR-Code文件,解码QR-Code,并将文本显示在Result中!

【5】编码

核心代码1:生成QR-Code

核心代码2:解码QR-Code

【6】功能展示

(1)生成QR-Code

输入Hello World!点击Generate!

(2)保存QR-Code

(3)解码QR-Code

这次我们选择最开始我们利用Zint生成的hello.png,看看能否获得同样的结果。

我们看到,结果与JRuby输出的结果相同。

【7】最后项目源码分享,欢迎进一步探讨,Thank you for your support!

Click me to get code.

转载自:http://www.cnblogs.com/Kassadin/p/4534952.html

.NET 下二维码解决方案的更多相关文章

  1. Android下二维码的扫描

    Android平台下 二维码的扫描一般采用: Zxing:参考地址 Zxing功能比较强大,支持条形码和二维码的扫描,用的人也比较多,但是Zxing太大,一般开发简单的app,用起来比较麻烦. 所以网 ...

  2. 有关python下二维码识别用法及识别率对比分析

    最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...

  3. mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案

    微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热潮即将到来, 我也怀着激动的心情准备全身心投入其中,不过截止目前,在官方网站上下载的最新版本都无法使用,打开 ...

  4. 【转】mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案

    转自:https://www.cnblogs.com/stevenluo/p/6030445.html   微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热 ...

  5. ios7下二维码功能的实现

    苹果公司升级到IOS7后自己的PassBook自带二维码扫描功能,所以现在使用二维码功能不需要在借助第三方库了 使用前请先导入AVFoundation.frameWork // //  YHQView ...

  6. Lazarus的二维码解决方案

    不解释,直接上图

  7. 【转】Android平台下利用zxing实现二维码开发

    http://www.cnblogs.com/dolphin0520/p/3355728.html 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描 ...

  8. Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

  9. (转载)Android平台下利用zxing实现二维码开发

    Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...

随机推荐

  1. Python之路-基础数据类型之字符串

    字符串类型 字符串是不可变的数据类型 索引(下标) 我们在日常生活中会遇到很多类似的情况,例如吃饭排队叫号,在学校时会有学号,工作时会有工号,这些就是一种能保证唯一准确的手段,在计算机中也是一样,它就 ...

  2. Python9-条件-定时器-队列-day40

    复习 线程 线程是进程中的执行单位 线程是cpu执行的最小单位 线程之间资源共享 线程的开启和关闭以及切换的时间开销远远小于进程 线程本身可以在同一时间使用多个cpu,python与线程 由于cpyt ...

  3. C++构造函数使用的多种方法

    // classes and uniform initialization #include <iostream> using namespace std; class Circle { ...

  4. HDU:1358-Period

    Period Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Desc ...

  5. 关于tree节点的刷新

    1.刷新节点分为刷新整个树和刷新指定节点 (1)刷新整个树 $("#tree").tree("reload"); (2)刷新指定节点(方法:传入需要刷新节点的父 ...

  6. day23 Model 操作,Form 验证以及序列化操作

    Model 操作 1创建数据库表 定制表名:       普通索引:             创建两个普通索引,这样就会生成两个索引文件   联合索引:           为了只生成一个索引文件,才 ...

  7. go经典练习题涉及流程控制-字符串-struct-map的数据类型的处理

    one:求1到100之间的质数 package main import ( "fmt" ) func isPrime(n int) bool { var flag = true f ...

  8. laravel5.2总结--软删除

    当模型被软删除时,它们并不会真的从数据库中被移除.而是会在模型上设置一个 deleted_at 属性并将其添加到数据库.如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空. ...

  9. Spring进阶-怎样集成定时调度Quartz

    在一些项目里面比如进销存系统,对一些过期图片的定时清理或者库存不足发出预警提示,就需要用到定时调度技术. 每当经过一段时间,程序会自动执行,就是定时调度.如果要使用定时调度,则必须保证程序始终运行才行 ...

  10. IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路

    在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...