基于libqrencode的二维码生成

原创 2015年11月19日 22:01:32
基于libqrencode的二维码生成

        libqrencode是一个C语言编写的用来生成二维条形码的库,生成的二维条形码可以通过手机的CCD摄像机轻易的扫描出来。此库生成的二维码的容量多达7000个数字或4000个字符,并且具有很强的鲁棒性。

QR Code example

        目前,该库的稳定版本是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 <png.h>一行错误提示文件找不到(如果机器已经安装了png库,则不会有此提示)。解决办法安装png库,这个当然是个好主意,不过png的应该是跟这种格式文件相关的操作,而我们的初衷是只想生成二维码的数据,具体生成图片的格式应该不仅仅是这一种吧,所以我们赌一把删除此行再编译,神马??? 天哪,居然编译错误数飙升,呜呜呜。到此时,是不是内心已经崩溃了,不过搞技术这一行,应该具备面对困难,不屈不饶、宠辱不惊的心态。好,让我们硬着头皮看下去吧。继续在qrenc.c文件中摸索,咦,有新发现哎,writePNG函数显然是写PNG格式文件用的,在此我们用不到,嘿嘿,删掉 。

        (2)继续编译,发现编译错误数立马少了好多。开心的不得了啊,继续排查,其他的错误提示都是都是__STATIC未定义。工程中搜索一下__STATIC,发现多处函数开头都有此定义,要一一修改的话好像有点麻烦,工程中肯定有那么一处,只要修改了该处就可以解决问题的。这种文件一般是预编译文件,或被共用的头文件。找啊找,找啊找,有一个可疑之处,每个文件都包含了这个。

        这不是配置文件嘛,豁然开朗,这个就是配置编译使用的头文件。找了一下文件,没有找到,那我们就自己建一个吧。然后有一点需要注意的地方,必须开启这个HAVE_CONFIG_H的宏定义。
如下图找到Preprocessor Macros

        在右侧添加值

        至此,找个宏就被开启了,我们在config.h 文件中,定义#define __STATIC static
        (3)然后继续编译

        这几个是API的版本号,我们都可以在config.h中定义

static const char *MAJOR_VERSION = “3”;
static const char *MINOR_VERSION = “4”;
static const char *MICRO_VERSION = “4”;
static const char *VERSION = “3.4.4”;

        (4)继续编译,发现writePNG已经被我们删除掉了,但是还在调用,所以删除调用的地方。再编译一下,还有最后一处错误duplicate symbol _main in。 main函数重定义,工程里面搜索一下main,最后定位到 qrenc.c中有个main函数, 额。。。, 原来找个文件是工程的测试文件啊,所以直接删除该文件,然后编译,哈哈哈哈,通过了。库的移植这一部分搞定了,下面就是如何使用的问题了。
        6.OC使用libqrencode这一部分,直接使用老外写的一个OC分装的生成图片的源代码。
其实就是类似那个WritePNG,自己解析成OSX下的NSImage 或 IOS下的UIImage.

        最后附上代码部分:

        OSX工程:https://github.com/FyhSky/QRCode_OC_MAC

        IOS工程:https://github.com/FyhSky/QRCode_OC_IOS

        转载请注明出处:http://blog.csdn.net/skynullcode

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

libqrencode生成二维码图片的问题

libqrencode在生成编码后,如何生成二维码图片。可以通过libpng来生成二维码图片文件。但在在网络通信中,如何先生成二维码图片文件,再读取文件数据,发送出去,这是一种可行的方法。 但是有没有...

利用libqrencode生成二维码并保持成bmp图片

二维码的生成原理与细节可以参考这里:http://coolshell.cn/articles/10590.html,是陈硕大大分析的,他的博客都是干货。 VS编译qrencode成静态lib可以参考这...

libqrencode库编译及使用

libqrencode库libqrencode是一个日本人写的生成二维码的可以跨平台的c库,官网是这里,Github在这里。 在C++里当然也是可以使用的,但问题是官网上没仔细说明怎么使用这个库,花...

vc2010 编译 qrencode

qrencode 是一个生成QR 二维码的开源库,用法很简单,但是没有提供在vs 系统下编译的项目文件,所以在win下使用不太方便。为此,我研究了一下,搞定了用 VC 2010 编译生成静态库的方法。...

基于qrencode-3.4.4的二维码生成

MFC DEMO程序下载地址到点击打开链接下载 /*////////////////////////////////////// 功能:生成QR二维码 参数: szText: 二维码内容 ...

使用二维码——第三方库ZBar和libqrencode的使用

1.下载ZBar SDK并导入工程 地址:https://github.com/bmorton/ZBarSDK 2.往项目中添加Framework框架及动态库 AVFoundation.fram...

QR code二维码简介及Qrencode库的移植与使用

现在生活中,二维码可以说是无处不在,微信扫码支付,支付宝扫码支付,就连贴小广告的都带上了二维码了。之前一直想去了解一下,还是太懒了,就没去,现在项目中需要用到这东西,正好借此机会了解一下。    ...

xcode 7 为创建的项目添加框架

在 IOS 开发中,有时候不免要添加一些框架来完成特定功能,比如,添加 CoreLocation.framework 框架来完成地图定位服务。其步骤如下:1、选中项目名称; 2、选中 Build P...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)