生成二维码的开源工具对比(附源码了呀!)

简介: 原文:生成二维码的开源工具对比(附源码了呀!)某天发现生成二维码的工具(zxing)运行的很慢,于是乎上网上寻找生成二维码的工具,发现常见的开源工具有如下三种: Zxing(zxing.dll) ThoughtWorks(ThoughtWorks.QRCode.dll) QrCodeNet(Gma.QrCodeNet.Encoding.dll) 选哪个好呢?那就自己手动比较一下吧。
原文: 生成二维码的开源工具对比(附源码了呀!)

某天发现生成二维码的工具(zxing)运行的很慢,于是乎上网上寻找生成二维码的工具,发现常见的开源工具有如下三种:

  • Zxing(zxing.dll)
  • ThoughtWorks(ThoughtWorks.QRCode.dll)
  • QrCodeNet(Gma.QrCodeNet.Encoding.dll)

选哪个好呢?那就自己手动比较一下吧。

首先就遇到一个大坑,为啥人家zxing的使用方式和自己的使用的不一样,后来才发现zxing.dll其实有俩版,一个416kb,一个200多kb。我们原来用的是200多kb的,效率比较慢,那就用416kb的比较吧

zxing有俩版,都叫zxing.dll,都是生成二维码的,可能作者还是一个人,但是使用方式和效率差距太大了,请认准416kb版本

  1. 对被编码的内容长度的支持,如下表所示:

  可以看出ThoughtWorks对于编码内容有长度限制(可以通过设置调整,但是还是很容易超长),基本已经被踢出局。

  2. 三种工具的执行效率

其中:twqr指ThoughtWorks,netqr指QrCodeNet。可以看出已经out出局的ThoughtWorks执行效率最快,而Zxing是QrCodeNet的2倍,但是时间都不是很长。而除了ThoughtWorks外另外俩个都会随被编码内容变长而增长。

  3. 生成文件大小的比较:

文件大小QrCodeNet更小些,QrCodeNet甚至可以根据内容大小调整尺寸。而Zxing最大,不过Zxing的尺寸也是大于其他俩个的。

(zxing是设置象素大小,所以此处用于50x数值,因为只有100的倍数才能保证边框的设置和实际生成的边框大小相符;而ThoughtWorks和QrCodeNet设置数值,实际尺寸约是33x数值,和边框值有关)

  4. 边框设置

该问题比较复杂,表格可以列很多,此处就概述下

  • ThoughtWorks默认不支持边框,所以他设置尺寸是:33x数值+1
  • QrCodeNet支持无边框,细边框,粗边框三种,所以设置的尺寸为:29x数值、33x数值、37x数值
  • Zxing尺寸和边框可以任意设置,所以zxing优先保证尺寸,至于边框是在满足尺寸之后才会考虑边框的大小,根据经验尺寸是100的倍数时边框支持的最好

   5. 抉择

已经对比完成了,大伙觉得选哪个呢?如果非要选一个我更倾向于选Zxing。不过我更想告诉大家的是,谁也不选,而是做一个代理模式,对外暴漏的是自己的接口,底层你管我用的是谁呢,说不定明天我就换了一个更美更好的接口呢。

  6. 我要带logo

二维码必须带logo,所以我从"诸葛风流"那偷来了源码,会放到附件上。附件中已经是做好了代理模式的源码,如果有用请点赞,用好请留言。

我是源码,点我

 

目录
相关文章
|
定位技术 开发工具 Android开发
Leaflet开发入门
Leaflet开发入门
226 0
|
1月前
|
移动开发 小程序 数据可视化
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
一招学会DIY官网可视化设计支持导出微擎、UNIAPP、H5、微信小程序源码
34 2
|
4月前
|
小程序
【微信小程序-原生开发】富文本编辑器 editor 的使用教程
【微信小程序-原生开发】富文本编辑器 editor 的使用教程
594 0
【微信小程序-原生开发】富文本编辑器 editor 的使用教程
|
6月前
|
JavaScript 搜索推荐 前端开发
《VitePress 简易速速上手小册》第2章:Markdown 与页面创建(2024 最新版)
《VitePress 简易速速上手小册》第2章:Markdown 与页面创建(2024 最新版)
223 0
|
6月前
|
小程序 数据可视化 前端开发
微信小程序开发入门教程-文本组件介绍
微信小程序开发入门教程-文本组件介绍
|
Web App开发 机器人 iOS开发
一键将网页内容剪藏到Notion,这个插件值得一试。
一键将网页内容剪藏到Notion,这个插件值得一试。
干货!layerGroup在LeafLet中的实战
需求场景:boss想针对分子公司进行统一展示,有可能在地图上统一添加、移除、统一调整图标等操作。常规做法可以采用遍历法,去循环所有的marker,批量操作。此时,可以采用layerGroup的方式,将所有分子公司存放在一个layer中,通过分组,可以批量操作存放在layerGroup中
670 0
干货!layerGroup在LeafLet中的实战
|
移动开发 小程序 前端开发
基于Taro的微信小程序分享图片功能实践
在各种小程序(微信、百度、支付宝)、H5、NativeApp 纷纷扰扰的当下,给大家强烈安利一款基于React的多终端开发利器:京东Taro(泰罗·奥特曼),Taro致力于多终端统一解决方案,一处代码,多处运行。
1044 0
|
定位技术
leaflet实用插件整理
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/82796650 leaflet实用插件整理 leafletjs地图框架,在地图这块功能还是强大,而且支持插件扩展和自定义开发。
1460 0
|
JavaScript 定位技术 前端开发
leaflet教程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/82415601 leaflet简介 本教程使用leaflet进行基本的地图开发,功能介绍,代码演示。
2399 0