基于libqrencode的二維碼生成

基于libqrencode的二維碼生成

libqrencode是一個C語言編寫的用來生成二維條形碼的庫拉馋,生成的二維條形碼可以通過手機(jī)的CCD攝像機(jī)輕易的掃描出來。此庫生成的二維碼的容量多達(dá)7000個數(shù)字或4000個字符惨好,并且具有很強(qiáng)的魯棒性煌茴。

QR Code example

目前,該庫的穩(wěn)定版本是3.4.4日川, 具有以下特點(diǎn):?

? ?1). 運(yùn)行時不需要其他額外的文件 - 快速的編碼 - 輸入數(shù)據(jù)的自動優(yōu)化 ? ??

? ?2).該庫只支持日本工業(yè)標(biāo)準(zhǔn)X0510:2004 或 ISO/IEC 18004所規(guī)定的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/處下載穩(wěn)定的版本回论。? ? ? ?

?2.解壓下載的源代碼包,將里面所有的.h和.c文件拷貝出來放在一個文件夾中分歇,例如文件夾命名為libqrencode傀蓉。? ? ? ??

3.新建 工程,選擇OSX的Application - > Cocoa Application –>Next.

填寫好Produce Name , identifer隨便填(反正不提交App store),然后Next职抡,選擇好存放工程目錄葬燎,點(diǎn)解create創(chuàng)建工程成功.

4.將之前準(zhǔn)備好的libqrencode文件夾下文件添加到工程中。添加方法有多種,可以直接拖拽文件夾到工程谱净,會彈出如下提示框窑邦。點(diǎn)擊Finish完成添加。

5.必要的修改處理壕探。點(diǎn)擊編譯冈钦,會發(fā)現(xiàn)多處錯誤。

只看結(jié)果的可以直接刪除qrenc.c文件李请,然后跳到添加宏定義部分第(2)部分并忽略第(4)瞧筛,想看問題是如何一步一步解決的,請繼續(xù)往下看(其實(shí)最后qrenc.c文件還是要被刪除的)捻艳。????????(1)首先定位到qrenc.c文件中驾窟,發(fā)現(xiàn)`#include`一行錯誤提示文件找不到(如果機(jī)器已經(jīng)安裝了png庫,則不會有此提示)认轨。解決辦法安裝png庫绅络,這個當(dāng)然是個好主意,不過png的應(yīng)該是跟這種格式文件相關(guān)的操作嘁字,而我們的初衷是只想生成二維碼的數(shù)據(jù)恩急,具體生成圖片的格式應(yīng)該不僅僅是這一種吧,所以我們賭一把刪除此行再編譯纪蜒,神馬衷恭??纯续? 天哪宾毒,居然編譯錯誤數(shù)飆升牺勾,嗚嗚嗚。到此時,是不是內(nèi)心已經(jīng)崩潰了蹲坷,不過搞技術(shù)這一行诊胞,應(yīng)該具備面對困難庸队,不屈不饒刁卜、寵辱不驚的心態(tài)。好逢唤,讓我們硬著頭皮看下去吧拉讯。繼續(xù)在qrenc.c文件中摸索,咦鳖藕,有新發(fā)現(xiàn)哎魔慷,writePNG函數(shù)顯然是寫PNG格式文件用的,在此我們用不到著恩,嘿嘿院尔,刪掉 纹烹。

(2)繼續(xù)編譯,發(fā)現(xiàn)編譯錯誤數(shù)立馬少了好多召边。開心的不得了啊,繼續(xù)排查裹驰,其他的錯誤提示都是都是*__STATIC*未定義隧熙。工程中搜索一下__STATIC,發(fā)現(xiàn)多處函數(shù)開頭都有此定義幻林,要一一修改的話好像有點(diǎn)麻煩贞盯,工程中肯定有那么一處,只要修改了該處就可以解決問題的沪饺。這種文件一般是預(yù)編譯文件躏敢,或被共用的頭文件。找啊找整葡,找啊找件余,有一個可疑之處,每個文件都包含了這個遭居。

這不是配置文件嘛啼器,豁然開朗,這個就是配置編譯使用的頭文件俱萍。找了一下文件端壳,沒有找到,那我們就自己建一個吧枪蘑。然后有一點(diǎn)需要注意的地方损谦,必須開啟這個HAVE_CONFIG_H的宏定義。如下圖找到Preprocessor Macros

在右側(cè)添加值

至此岳颇,找個宏就被開啟了照捡,我們在config.h 文件中,定義#define __STATIC static????????(3)然后繼續(xù)編譯

這幾個是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)繼續(xù)編譯麻敌,發(fā)現(xiàn)writePNG已經(jīng)被我們刪除掉了,但是還在調(diào)用掂摔,所以刪除調(diào)用的地方术羔。再編譯一下,還有最后一處錯誤duplicate symbol _main in乙漓。 main函數(shù)重定義级历,工程里面搜索一下main,最后定位到 qrenc.c中有個main函數(shù), 額叭披。寥殖。玩讳。, 原來找個文件是工程的測試文件啊嚼贡,所以直接刪除該文件熏纯,然后編譯,哈哈哈哈粤策,通過了樟澜。庫的移植這一部分搞定了,下面就是如何使用的問題了叮盘。???????

?6.OC使用libqrencode這一部分秩贰,直接使用老外寫的一個OC分裝的生成圖片的源代碼。其實(shí)就是類似那個WritePNG柔吼,自己解析成OSX下的NSImage 或 IOS下的UIImage.????

?最后附上代碼部分:?????

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

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

轉(zhuǎn)載請注明出處:

http://blog.csdn.net/skynullcode?

or

http://www.reibang.com/p/e05ffa02a067

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毒费,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子愈魏,更是在濱河造成了極大的恐慌觅玻,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝌戒,死亡現(xiàn)場離奇詭異串塑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)北苟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門桩匪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人友鼻,你說我怎么就攤上這事傻昙。” “怎么了彩扔?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵妆档,是天一觀的道長。 經(jīng)常有香客問我虫碉,道長贾惦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任敦捧,我火速辦了婚禮须板,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘兢卵。我一直安慰自己习瑰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布秽荤。 她就那樣靜靜地躺著甜奄,像睡著了一般柠横。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上课兄,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天牍氛,我揣著相機(jī)與錄音,去河邊找鬼烟阐。 笑死糜俗,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的曲饱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼珠月,長吁一口氣:“原來是場噩夢啊……” “哼扩淀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啤挎,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驻谆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庆聘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胜臊,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年伙判,在試婚紗的時候發(fā)現(xiàn)自己被綠了象对。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡宴抚,死狀恐怖勒魔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情菇曲,我是刑警寧澤冠绢,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站常潮,受9級特大地震影響弟胀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喊式,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一孵户、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垃帅,春花似錦延届、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厕吉。三九已至,卻和暖如春械念,著一層夾襖步出監(jiān)牢的瞬間头朱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工龄减, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留项钮,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓希停,卻偏偏與公主長得像烁巫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宠能,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,139評論 30 470
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,107評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫亚隙、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,102評論 4 62
  • 今天聽聞谷歌宣布 Kotlin 成 Android 開發(fā)一級語言违崇,我也下載了Android Studio 3.0...
    fishpan閱讀 3,836評論 3 0
  • 畫線的一些部分使用CALayer而不是UIView阿弃。 如果你使用CALayer,不設(shè)置contents羞延,而是設(shè)置b...
    齊滇大圣閱讀 486評論 0 1