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