zxing 如何识别反转二维码
说起二维码扫描,估计很多人用的是 zxing 吧。
然而 zxing 虽然好用,但是却有一些坑。
这边分析一下自己实际项目遇到的一个坑。
什么坑呢?
下面举个栗子你就懂了。
这边生成二维码使用的是网络上的一个网站联图
以百度为例,正常情况生成的二维码如下:
这种情况下用 zxing 分分钟就可以识别出来。
但是假设我将前景色和后景色调换,生成的二维码如下:
这种情况下 zxing 就识别不出了。
所以说这种时候就很无奈了。毕竟有些场景就需要用到反转二维码。
所以本篇说的 zxing 的坑就是无法识别反转二维码。
咋办呢?凉拌。
这种时候就需要去源码看看了。
看一下二维码解析的代码逻辑在哪?
通过一番折腾,跟踪调试,最后定位到如下位置:
关键代码:(DecodeHandler.java 里面的 decode 方法)
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
如果要识别上面的反转百度二维码,需要如何处理呢?
很简单,只需要将上面的代码改为:
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source.invert()));
即可。
到了这里,相信聪明的你应该知道如何让 zxing 同时支持两种格式了。
只需要设置一个计数器,然后在指定次数(比如前 3 次)里面使用
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
在另外次数(比如后 3 次)里面使用
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source.invert()));
交替使用即可。
这样就可以解决正转和反转二维码的识别了。
NOTE:
- 通过交替识别可能会降低识别速度,因此次数设置为多少需要自己调试把控。
- 计数时注意避免次数溢出。
如果你有其他方法,欢迎留言讨论。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
python如何帮我在投资中获取更高收益
搞技术的大都比较纯粹,比较实在,除了工资之外基本就没有别的收入了(少部分人能接外包赚外块)。或许是迫于生活的压力,或许是不甘于固定的工资,或许是出于技术人骨子里的好奇,亦或是这几年关于理财投资的大力宣传、门槛降低,理财越来越被我们所接受,并开始尝试股票、基金、P2P、XX宝等各种理财产品,本文所讲与P2P有关,但不打广告,只讲技术,顺便说明:投资有风险,理财需谨慎,我们赚钱不容易,不能给打了水漂。 背景介绍 某公司的理财产品有如下特点: 公司分别有12,18,24,36个月的固定期限理财产品,期限越长利率越高 投资用户可将债权申请转给其他投资人,转出时的利率你可以自行控制 你也可以通过平台借钱,借钱金额不能超过在投金额的3倍,所谓加杠杆 有一部分用户(行话叫牛)就靠平台活动或高息的时候借钱加杠杆投资,需要还钱的时候通过债权转让平台转让标还借款,通过买入和卖出时的利率差获得额外收益。这中间比较关键的一点就是转出时的利率,利率低收益就高(但太低就没有人接手了,转不出去还不了借款就要支付高额罚金),利率又跟当天待还的金额和已成交的金额有直接关系,那么如果能及时获取这两个数据就大概知道自己标多...
- 下一篇
为什么青少年一定要学Python?
“学习编程要比学习英语更重要。因为编程语言可以影响全球70亿人。 ——苹果CEO库克 编程是互联网、人工智能等高新技术的基础和核心,而当下,正是计算机编程普及的风口浪尖,谁能抢先一步抓住这个风口,就会在未来的计算机时代占有主动地位。现在编程教育正在逐渐普及,学习编程对孩子的成长有着重要意义。 ●编程是人工智能的基础 芬兰教育部长说:“在未来,如果你的孩子懂编程,他就是未来世界的创造者;如果他不懂,他只是使用者。”我们不希望未来所有的孩子都成为程序员,但是希望每个孩子都有改变世界的能力。在可见的未来,“编程”将如今天的语文、数学、英语一样,成为每个受过教育的人都必须具备的基本素质,编程是未来人工智能时代的基础。 ●国内外都越来越重视编程教育 在国外,超过24个国家将编程作为最基础的学科——包括日本,韩国,以及欧洲多个国家,已经将编程教育纳入K12课程大纲或者教学场景。2017年浙江省发布《浙江省深化高校考试招生制度综合改革试点方案》,该方案中就明确规定:明确将信息技术学科(含编程)纳入高中生的必学科目。浙江高考模式是语数英+三门选考,信息技术就是其中一门,每项各占50分。 ●编程人才...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路