基于libqrencode的二维码生成
libqrencode是一个C语言编写的用来生成二维条形码的库,生成的二维条形码可以通过手机的CCD摄像机轻易的扫描出来。此库生成的二维码的容量多达7000个数字或4000个字符,并且具有很强的鲁棒性。
目前,该库的稳定版本是3.4.4, 具有以下特点:
-
运行时不需要其他额外的文件
-
快速的编码
-
输入数据的自动优化
该库只支持日本工业标准X0510:2004 或 ISO/IEC 18004所规定的QR Code model 2模式,不支持如下功能: ECI and FNC1 mode QR Code model 1 具体介绍详见:http://fukuchi.org/works/qrencode/
言归正传,本文就讲述如何使用该库一步步的生成osx或ios下的二维码 。步骤如下:
1.从http://fukuchi.org/works/qrencode/ 处下载稳定的版本。
2.解压下载的源代码包,将里面所有的.h和.c文件拷贝出来放在一个文件夹中,例如文件夹命名为libqrencode。
3.新建 工程,选择OSX的Application - > Cocoa Application –>Next.
填写好Produce Name , identifer随便填(反正不提交App store),然后Next,选择好存放工程目录,点解create创建工程成功.
4.将之前准备好的libqrencode文件夹下文件添加到工程中。 添加方法有多种,可以直接拖拽文件夹到工程,会弹出如下提示框。点击Finish完成添加。
5.必要的修改处理。
点击编译,会发现多处错误。
只看结果的可以直接删除qrenc.c文件,然后跳到添加宏定义部分第(2)部分并忽略第(4),想看问题是如何一步一步解决的,请继续往下看(其实最后qrenc.c文件还是要被删除的)。
(1)首先定位到qrenc.c文件中,发现#include
(2)继续编译,发现编译错误数立马少了好多。开心的不得了啊,继续排查,其他的错误提示都是都是__STATIC未定义。工程中搜索一下__STATIC,发现多处函数开头都有此定义,要一一修改的话好像有点麻烦,工程中肯定有那么一处,只要修改了该处就可以解决问题的。这种文件一般是预编译文件,或被共用的头文件。找啊找,找啊找,有一个可疑之处,每个文件都包含了这个。
这不是配置文件嘛,豁然开朗,这个就是配置编译使用的头文件。找了一下文件,没有找到,那我们就自己建一个吧。然后有一点需要注意的地方,必须开启这个HAVE_CONFIG_H的宏定义。 如下图找到Preprocessor Macros
在右侧添加值
至此,找个宏就被开启了,我们在config.h 文件中,定义#define __STATIC static
(3)然后继续编译
这几个是API的版本号,我们都可以在config.h中定义
(4)继续编译,发现writePNG已经被我们删除掉了,但是还在调用,所以删除调用的地方。再编译一下,还有最后一处错误duplicate symbol _main in。 main函数重定义,工程里面搜索一下main,最后定位到 qrenc.c中有个main函数, 额。。。, 原来找个文件是工程的测试文件啊,所以直接删除该文件,然后编译,哈哈哈哈,通过了。
库的移植这一部分搞定了,下面就是如何使用的问题了。
6.OC使用libqrencode这一部分,直接使用老外写的一个OC分装的生成图片的源代码。 其实就是类似那个WritePNG,自己解析成OSX下的NSImage 或 IOS下的UIImage.
最后附上代码部分: