生成二維碼的開(kāi)源工具對(duì)比(附源碼)
某天發(fā)現(xiàn)生成二維碼的工具(zxing)運(yùn)行的很慢,于是乎上網(wǎng)上尋找生成二維碼的工具,發(fā)現(xiàn)常見(jiàn)的開(kāi)源工具有如下三種:
- Zxing(zxing.dll)
- ThoughtWorks(ThoughtWorks.QRCode.dll)
- QrCodeNet(Gma.QrCodeNet.Encoding.dll)
選哪個(gè)好呢?那就自己手動(dòng)比較一下吧。
首先就遇到一個(gè)大坑,為啥人家zxing的使用方式和自己的使用的不一樣,后來(lái)才發(fā)現(xiàn)zxing.dll其實(shí)有倆版,一個(gè)416kb,一個(gè)200多kb。我們?cè)瓉?lái)用的是200多kb的,效率比較慢,那就用416kb的比較吧
(zxing有倆版,都叫zxing.dll,都是生成二維碼的,可能作者還是一個(gè)人,但是使用方式和效率差距太大了,請(qǐng)認(rèn)準(zhǔn)416kb版本)
1. 對(duì)被編碼的內(nèi)容長(zhǎng)度的支持,如下表所示:
可以看出ThoughtWorks對(duì)于編碼內(nèi)容有長(zhǎng)度限制(可以通過(guò)設(shè)置調(diào)整,但是還是很容易超長(zhǎng)),基本已經(jīng)被踢出局。)
2. 三種工具的執(zhí)行效率
其中:twqr指ThoughtWorks,netqr指QrCodeNet??梢钥闯鲆呀?jīng)out出局的ThoughtWorks執(zhí)行效率最快,而Zxing是QrCodeNet的2倍,但是時(shí)間都不是很長(zhǎng)。而除了ThoughtWorks外另外倆個(gè)都會(huì)隨被編碼內(nèi)容變長(zhǎng)而增長(zhǎng)。
3. 生成文件大小的比較:
文件大小QrCodeNet更小些,QrCodeNet甚至可以根據(jù)內(nèi)容大小調(diào)整尺寸。而Zxing最大,不過(guò)Zxing的尺寸也是大于其他倆個(gè)的。
(zxing是設(shè)置象素大小,所以此處用于50x數(shù)值,因?yàn)橹挥?00的倍數(shù)才能保證邊框的設(shè)置和實(shí)際生成的邊框大小相符;而ThoughtWorks和QrCodeNet設(shè)置數(shù)值,實(shí)際尺寸約是33x數(shù)值,和邊框值有關(guān))
4. 邊框設(shè)置
該問(wèn)題比較復(fù)雜,表格可以列很多,此處就概述下
- ThoughtWorks默認(rèn)不支持邊框,所以他設(shè)置尺寸是:33x數(shù)值+1
- QrCodeNet支持無(wú)邊框,細(xì)邊框,粗邊框三種,所以設(shè)置的尺寸為:29x數(shù)值、33x數(shù)值、37x數(shù)值
- Zxing尺寸和邊框可以任意設(shè)置,所以zxing優(yōu)先保證尺寸,至于邊框是在滿足尺寸之后才會(huì)考慮邊框的大小,根據(jù)經(jīng)驗(yàn)尺寸是100的倍數(shù)時(shí)邊框支持的最好。
5. 抉擇
已經(jīng)對(duì)比完成了,大伙覺(jué)得選哪個(gè)呢?如果非要選一個(gè)我更傾向于選Zxing。不過(guò)我更想告訴大家的是,誰(shuí)也不選,而是做一個(gè)代理模式,對(duì)外暴漏的是自己的接口,底層你管我用的是誰(shuí)呢,說(shuō)不定明天我就換了一個(gè)更美更好的接口呢。
6. 我要帶logo
二維碼必須帶logo,所以我從"諸葛風(fēng)流"那偷來(lái)了源碼,會(huì)放到附件上。附件中已經(jīng)是做好了代理模式的源碼,如果有用請(qǐng)點(diǎn)贊,用好請(qǐng)留言。
源碼下載:http://xiazai.jb51.net/201701/yuanma/QRCreater_jb51.rar
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
asp.net2.0實(shí)現(xiàn)郵件發(fā)送(測(cè)試成功)
2008-06-06ASP.NET Core使用HostingStartup增強(qiáng)啟動(dòng)操作方法詳解
這篇文章主要介紹了ASP.NET Core使用HostingStartup增強(qiáng)啟動(dòng)操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11ASP.NET.4.5.1+MVC5.0設(shè)置系統(tǒng)角色與權(quán)限(二)
這篇文章主要介紹了使用ASP.NET.4.5.1+MVC5.0構(gòu)建項(xiàng)目中設(shè)置系統(tǒng)角色的全部過(guò)程,十分的詳細(xì),附上全部源碼,推薦給想學(xué)習(xí).net+mvc的小伙伴們2015-01-01.NET Core 基于Websocket的在線聊天室實(shí)現(xiàn)
這篇文章主要介紹了.NET Core 基于Websocket的在線聊天室實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03完美解決Could not load file or assembly AjaxPro.2 or one of its
Could not load file or assembly AjaxPro.2,經(jīng)排查原來(lái)是mcafee限制了2007-08-08.NET?Core使用APB?vNext框架入門(mén)教程
這篇文章介紹了.NET?Core使用APB?vNext框架的入門(mén)教程,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02